我的问题是关于素数代码,它显示三个的倍数

时间:2019-09-10 09:16:30

标签: java

我的代码是要显示提供给它的数字之间的所有质数范围,但问题是它显示质数以及三个的倍数。

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

1 个答案:

答案 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);
}