任何Java开发人员都需要回答的最常见问题之一就是如何用Java编写素数程序。它是有关领先的高级通用编程语言的基本概念之一。
有几种方法可以用Java编写程序来检查数字是否为质数。但是,基本逻辑保持不变,即您需要检查输入的数字(或已在程序中定义的数字)是否具有除1以外的除数,以及除数本身是否具有除数。
素数程序是学习Java必不可少的部分。因此,大多数有关Java的书籍都对此进行了介绍。在继续讨论Java中的质数程序之前,让我们首先了解质数的概念及其重要性。
质数–定义和重要性
除自身以外只能被1除的任何数字称为主要数字。3、5、23、47、241、1009都是素数的示例。虽然0和1不能满足质数的要求,但是2是整个无限长质数集中唯一的偶数质数。
质数表现出许多奇数的数学性质,这使它们成为广泛应用的理想选择,其中许多应用属于信息技术领域。例如,质数可用于伪随机数生成器和计算机哈希表。
在使用加密技术来隐藏信息的历史中,有很多实例。令人惊讶的是,这是使用质数对信息进行编码的过程。
随着计算机的引入,现代加密技术也被引入。生成复杂且更长的代码变得非常可行,这些代码很难破解。
大多数现代计算机密码学都依赖于利用大量的主要因素。由于质数是整数的基石,因此它们对数论家也至关重要。
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
完成!
我的原文章
http://bjbsair.com/2020-03-09/ai/1912/