编写一个Java程序,使用For循环、While循环和函数来检查素数。素数是除了1和它本身以外不能被任何其他数整除的自然数。
它们是: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、101、103、107、109、113、127、131、137、139、149、151、157、163、167、173、179、181、191、193、197、199等等。
Java程序使用For循环检查素数
此程序允许用户输入任何整数值。接下来,这个示例程序使用For循环检查给定数字是素数还是非素数。
提示:2是唯一的偶数。
import java.util.Scanner;
public class Example {
private static Scanner sc;
public static void main(String[] args)
{
int i, number, count = 0;
sc = new Scanner(System.in);
System.out.print(" Please Enter any Integer : ");
number = sc.nextInt();
for (i = 2; i <= number/2; i++)
{
if(number % i == 0)
{
count++;
break;
}
}
if(count == 0 && number != 1 )
{
System.out.println( number + " is a Prime");
}
else
{
System.out.println(number + " is Not");
}
}
}
使用for循环输出。

我们初始化整数i的值为2,并将(i <= Number/2)作为终止条件。
在for循环中,有一个If语句来检查Number是否能被i整除且余数为0。如果条件为True,Count会递增,并执行Break语句。
接下来,我们使用另一个If语句来检查Count是否为零且Number不等于1。如果为True,则该数为素数。
在上面的Java程序素数检查示例中,用户输入的整数是11。
第一次迭代:for(i = 2; i <= 11/2; i++)
- 条件 (2 <= 5.5) 为True。因此,它检查If语句。
- if(number % i == 0) => if (11%2 == 0) – 条件为False
- i++ 表示 i 变为 3
第二次迭代:(i = 3; 3 <= 11/2; i++)
- 条件 (3 <= 5.5) 为True。
- if (11 % 3 == 0) – 条件为False,
- i 变为 4。
第三次迭代:(i = 4; 4 <= 11/2; i++)
- 条件 (4 <= 5.5) 为True。
- if (11 % 4 == 0) – 条件为False。
- i 变为 5
第四次迭代:(i = 5; 5 <= 11/2; i++)
- 条件 (5 <= 5.5) 为True。
- if (11 % 5 == 0) – 条件为False。
- i 变为 6
第五次迭代:(i = 6; 6 <= 11/2; i++)。这意味着For循环内的条件 (6 <= 5.5) 为False。因此,编译器会跳出For循环。
接下来,它将进入If语句。 if(count == 0 && Number!= 1 ) 。
在所有五次迭代中,Java If语句都失败了,因此Count的值没有从初始化的0递增,并且Number= 11。所以,条件为True,该数字是素数。
Java程序使用While循环检查素数
此示例使用While循环检查给定数字是素数还是非素数。
import java.util.Scanner;
public class Example {
private static Scanner sc;
public static void main(String[] args)
{
int i = 2, num, count = 0;
sc = new Scanner(System.in);
System.out.print(" Please Enter any Value : ");
num = sc.nextInt();
while(i <= num/2)
{
if(num % i == 0)
{
count++;
break;
}
i++;
}
if(count == 0 && num != 1 )
{
System.out.println( num + " is a Prime");
}
else
{
System.out.println(num + " is Not");
}
}
}
我们只是用While循环替换了上面的示例中的For循环。如果您不了解循环,请参考WHILE LOOP。
输出

让我再输入一个
Please Enter any Value : 32
32 is Not
Java程序使用函数检查素数
这个程序查找素数与第一个示例相同。但是,我们将逻辑分离并将其放入一个单独的方法中。
import java.util.Scanner;
public class Example {
private static Scanner sc;
public static void main(String[] args)
{
int num, cnt = 0;
sc = new Scanner(System.in);
System.out.print(" Please Enter any : ");
num = sc.nextInt();
cnt = PriNu(num);
if(cnt == 0 && num != 1 )
{
System.out.println( num + " is a Prime");
}
else
{
System.out.println(num + " is Not");
}
}
public static int PriNu(int num)
{
int i, cnt = 0;
for (i = 2; i <= num/2; i++)
{
if(num % i == 0)
{
cnt++;
break;
}
}
return cnt;
}
}

输出 2
Please Enter any : 242
242 is Not