如何用Java制作素数程序

JeffreyZhao 阅读:29 2022-11-21 09:03:58 评论:0

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

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

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

质数–定义和重要性

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

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

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

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

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

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

Java素数程序

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

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

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

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

完成!


本文参考链接:https://www.yisu.com/zixun/87474.html
标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

我的关注

全民解析

搜索
关注我们