2020 我们用Java写素数程序

在这里插入图片描述任何Java开发人员都需要回答的最常见问题之一就是如何用Java编写素数程序。它是有关领先的高级通用编程语言的基本概念之一。

有几种方法可以用Java编写程序来检查数字是否为质数。但是,基本逻辑保持不变,即您需要检查输入的数字(或已在程序中定义的数字)是否具有除1以外的除数,以及除数本身是否具有除数。

素数程序是学习Java必不可少的部分。因此,大多数有关Java的书籍都对此进行了介绍。在继续讨论Java中的质数程序之前,让我们首先了解质数的概念及其重要性。

质数–定义和重要性

除自身以外只能被1除的任何数字称为主要数字。3、5、23、47、241、1009都是素数的示例。虽然0和1不能满足质数的要求,但是2是整个无限长质数集中唯一的偶数质数。

质数表现出许多奇数的数学性质,这使它们成为广泛应用的理想选择,其中许多应用属于信息技术领域。例如,质数可用于伪随机数生成器和计算机哈希表。

在使用加密技术来隐藏信息的历史中,有很多实例。令人惊讶的是,这是使用质数对信息进行编码的过程。

随着计算机的引入,现代加密技术也被引入。生成复杂且更长的代码变得非常可行,这些代码很难破解。

大多数现代计算机密码学都依赖于利用大量的主要因素。由于质数是整数的基石,因此它们对数论家也至关重要。

进一步了解素数在IT安全中重要性

Java素数程序

如前所述,有几种方法可以用Java实现素数程序。在本节中,我们将研究三种独立的方法以及另外两个用于打印素数的程序。

类型1 –一个简单的程序,不提供输入

这是在Java中实现用于检查数字是否为质数的程序的最简单方法之一。它不需要任何输入,只需告诉定义的数字(通过整数变量n)是否为质数即可。代码如下:

扫描二维码关注公众号,回复: 9760612 查看本文章
public class PrimeCheck{
public static void main(String args[]){
int i,m=0,flag=0;
int n=3;
m=n/2;
if(n==0||n==1){
System.out.println(n+" is not a prime number.");
}
else{
for(i=2;i<=m;i++){
if(n%i==0){
System.out.println(n+" is not a prime number.");
flag=1;
break;
}
}
if(flag==0) { System.out.println(n+" is a prime number."); }
}
}
}

输出:

3是质数。

类型2 – Java使用方法的程序(无需用户输入)

此Java代码演示了使用方法的素数程序的实现。与前面提到的程序一样,它不要求任何用户输入,并且仅对输入到程序中已定义方法(名为checkPrime)的数字起作用。这是代码:

public class PrimeCheckUsingMethod{
static void checkPrime(int n){
int i,m=0,flag=0;
m=n/2;
if(n==0||n==1){
System.out.println(n+" is not a prime number.");
}else{
for(i=2;i<=m;i++){
if(n%i==0){
System.out.println(n+" is not a prime number.");
flag=1;
break;
}
}
if(flag==0) { System.out.println(n+" is a prime number."); }
}
}
public static void main(String args[]){
checkPrime(1);
checkPrime(3);
checkPrime(17);
checkPrime(20);
}
}

输出:

1不是质数。
3是质数。
17是质数。
20不是质数。

类型3 – Java使用方法的程序(需要用户输入)

该Java程序类似于上述程序。但是,此程序提示用户输入。代码如下:

import java.util.Scanner;
import java.util.Scanner;
public class PrimeCheckUsingMethod2 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter a number: ");
int n = s.nextInt();
if (isPrime(n)) {
System.out.println(n + " is a prime number.");
} else {
System.out.println(n + " is not a prime number.");
}
}
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i < Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
)

输入数字:22
22不是质数。

Type 4 –用Java打印从1到100的素数的程序

此代码将演示一个Java程序,该程序能够打印1到100之间存在的所有素数。该程序的代码为:

class PrimeNumbers
{
public static void main (String[] args)
{
int i =0;
int num =0;
String primeNumbers = "";
for (i = 1; i <= 100; i++)
{
int counter=0;
for(num =i; num>=1; num--)
{
if(i%num==0)
{
counter = counter + 1;
}
}
if (counter ==2)
{
primeNumbers = primeNumbers + i + " ";
}
}
System.out.println("Prime numbers between 1 and 100 are :"\n);
System.out.println(primeNumbers);
}
}

输出:

1到100之间的质数为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Type 5 –用Java打印从1到n的素数的程序(用户输入)

此Java程序将打印介于1和n之间的所有素数,其中n是用户输入的数字。这是代码:

import java.util.Scanner;
class PrimeNumbers2
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
int i =0;
int num =0;
String primeNumbers = "";
System.out.println("Enter a number:");
int n = scanner.nextInt();
scanner.close();
for (i = 1; i <= n; i++)
{
int counter=0;
for(num =i; num>=1; num--)
{
if(i%num==0)
{
counter = counter + 1;
}
}
if (counter ==2)
{
primeNumbers = primeNumbers + i + " ";
}
}
System.out.println("Prime numbers between 1 and n are:"/n);
System.out.println(primeNumbers);
}
}

输出:

输入数字:22

1至22之间的质数为:
2 3 5 7 11 13 17 19

完成!

我的原文章
http://bjbsair.com/2020-03-09/ai/1912/

猜你喜欢

转载自blog.51cto.com/14744108/2477143