public static boolean isPrime(int number)
{
boolean result = true;
for (int i=2; i < number/2; i++)
{
if (number%i == 0)
{
result = false;
}
}
return result;
}
这段代码可以工作,但是我如何修改它,以便当 int number = 0 时,它返回 false?目前,当 number = 0 时,它返回 true。
最佳答案
是的,它确实像看起来一样简单:)
public static boolean isPrime(int number) {
boolean result = true;
if (number == 0){
return false;
}
for (int i = 2; i < number / 2; i++) {
if (number % i == 0) {
result = false;
}
}
return result;
}
执行此方法的有效方法是:
public static boolean isPrime(int number) {
//Everything less or equal 1 is not prime number
if (number <= 1) {
return false;
}
//2 is very special case, so I check it separately
if (number == 2) {
return true;
}
//This will help me rid off all even numbers
if (number % 2 == 0) {
return false;
}
//It is important to count the sqrt before using it in for-loop condition.
//If you use it in for-loop condition, it will be counted every single iteration.
int square = (int) Math.sqrt(number);
//I already checked %2, so now I need to check only odd numbers
for (int i = 3; i <= square; i += 2) {
if (number % i == 0) {
//If I find one number, I do not have to continue
return false;
}
}
return true;
}
关于java - java中的素数测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134211/