首页 > 解决方案 > 我的问题是关于它显示三的倍数的素数代码

问题描述

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

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

标签: java

解决方案


在以 j 作为计数器变量的循环内尝试此操作。这确保了从 2 到 j-1 的所有数字都不是 j 的因数。还要检查其他素数生成方法,例如Sieve of 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);
}

推荐阅读