大家看看这个用java isPrime()方法检证质数有什么错误啊?不太明白..

2024-12-20 21:14:22
推荐回答(3个)
回答1:

首先你的for ( i=0;i<=50;i++);后边有个分号,也就是一次也没有执行,只是给i赋了一个值,现在i应该等于50.所以什么也没有输出。另外给你说一下一个基本的编程规范的问题,就是所有的能省略分号的地方都不要去省略分号,即使是你现在知道if结束的位置,以后的时候改动就来可能你就给忘记了照成错误。还有一点就是if一般都要写上else,这样的话不管条件如何总会有输出结果,这样有利于我们诊断bug,题外话,仅供参考

回答2:

非常多错误。
public class TestPrimes
{
public static void main(String [] args)
{
int i;
//之前for循环这里有点错误
for (i=0; i<=50; i++)
{
if(isPrime(i))
{
System.out.print(i+" ");
}
}
}

//之前方法放错地方了吧
static boolean isPrime(int a)
{
//加上判断小于零比较好,不然负数会返回true
if (a<=0)
{
return false;
}
if (a>0&&a<=2)
{
return true;
}
//一个for循环就够了
for(int b=2; b {
if(a%b==0)
{
return false;
}
}
return true;
}
}

另外,格式是很重要的,所以最好把大括号都写全,这要减少因为失误造成出错。良好的代码规范也是工作时各种公司要求的。

回答3:

for (a=3;a<=50;a++) 这句没有什么意义吧,你试试我的··
public class TestPrimes {
public static void main(String[] args) {
int i;
for (i = 0; i <= 50; i++)
{
if (isPrime(i))
System.out.print(i + " ");}

}

static boolean isPrime(int a) {
if (a == 0)
return false;
if (a > 0 && a <= 2)
return true;

for (int b = 2; b < a; b++)
if (a % b == 0)
return false;
return true;

}
}