java中的素数测试 public静态布尔值isPrime(整数) { 布尔结果=真; 对于(int i=2;i
这段代码可以工作,但我如何修改它,使其在int number=0时返回false?当前,当number=0时,返回为true 是的,这真的很简单:)java中的素数测试 public静态布尔值isPrime(整数) { 布尔结果=真; 对于(int i=2;i,java,Java,这段代码可以工作,但我如何修改它,使其在int number=0时返回false?当前,当number=0时,返回为true 是的,这真的很简单:) public静态布尔值isPrime(整数){ 布尔结果=真; 如果(数字==0){ 返回false; } 对于(int i=2;i
public静态布尔值isPrime(整数){
布尔结果=真;
如果(数字==0){
返回false;
}
对于(int i=2;i
有效的方法是:
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静态布尔值isPrime(整数){
//小于或等于1的一切都不是素数
if(numberpublic静态布尔值isPrime(int number){
如果(数字<2){
返回false;
}
对于(int i=2;i
完全按照你刚才描述的做。我认为1也不是素数,顺便说一下,根据定义-你只需要循环到sqrt(number)
而不是number/2
,你也可以以2的增量循环。虽然这不是检查素数的真正有效的方法。谷歌搜索“埃拉托斯提尼筛”可以找到更好的方法;)@BoristheSpider如果他增加2,那么数字9将是素数。在这种情况下,循环将只计算number=number%(number/2)
因为前面的所有内容都将被覆盖。@Vash-我不明白你想说什么:)。什么内容将被覆盖?我的意思是你不必运行到最后。你可以将return放入循环中。
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;
}
public static boolean isPrime(int number) {
if (number < 2){
return false;
}
for (int i = 2; i < number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}