【发布时间】:2013-11-18 21:46:20
【问题描述】:
你好,我有一个小程序检查给定的数字是否是素数,但我不明白 for 循环中的某些部分,我需要你的帮助。 这是代码:
public class PrimeNumber
{
public static void main(String args[])
{
int number;
boolean prime;
/*
*is a natural number greater than 1 that has no positive divisors other
*than 1 and itself.
* such as: 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, and so on.
*/
number =23;
if(number<2)
prime=false;
else
prime=true;
for(int i=2; i <=number/2; i++)
{
if ((number%i) ==0)
{
prime =false;
break;
}
}
if(prime) System.out.println("It is prime number");
else System.out.println("it is not prime number");
}
}
我知道首先 if 函数检查给定的数字是否大于 2,如果不是 素数将为假,如果素数将为真。 然后在 for 循环中我认为 int 是 2 因为 2 是可能的最小素数? 我理解
【问题讨论】:
-
代码写得不好,所以我不能告诉你为什么要这样做,而不是使用更有效和广泛可用的解决方案。如果您想了解您的代码,我建议您尝试使用调试器或更改它,看看它有什么不同。
-
当你说
we它引出了问题;你为什么不问问写这篇文章的人为什么要这么做? -
是的,可能有更好的解决方案,但我不知道,我只是初学者,这是我第一次为素数编写程序。
-
@Milan 恕我直言,你应该扔掉那本书。当在这样的算法上发生这样的错误时,我担心更重要的事情无法处理。如果数字是偶数,则首先检查数字,然后循环
for(int i=3; i <=sqrt(number); i=i+2)