我的代码是要显示提供给它的数字之间的所有质数范围,但问题是它显示质数以及三个的倍数。
if (number<=1)
{
System.out.println("your number don't has prime number range");
}
else
{
for (j=1;j<=number;j++)
{
counter=0;
for (i=2;i<=j;i++)
{
if (j%i==0)
{
break;
}
else
{
counter=1;
}
}
if (counter==1)
{
System.out.println(j);
}
}
}
34的结果是
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33
答案 0 :(得分:1)
在循环内尝试使用j作为计数器变量。这样可以确保从2到j-1的所有数字都不是j的因子。还要检查其他质数生成方法,例如 Eratosthenes筛子,或通过运行循环直到sqrt(j)
counter=0;
for(i=2;i<j;i++){
if(j%i==0){
counter=1;
break;
}
}
if(counter==0){
System.out.println(j);
}