质数:我的代码有什么问题?它工作得很好,直到int限制,因为我长时间的代码是花费很多时间


public class PrimeNumbers {
    public static void main(String[] args) {
        int i = 1000000000;
        int m=2;
        int n=1;
        for (int j = 2; j < i; j++) {
            int l=0;
            if(j%25==0)
            {
                if(j%100==0)
                {
                    m++;
                }
                if(j%1000==0)
                {
                    m++;
                }
                m++;
            }
            if (j % 2 != 0) {
                for (int k = 2; k < j/m; k++) {
                    if (j % k == 0) {
                        l++;
                    }
                }
                if (l < 1) {
                    n++;
                }
                if(n==1001)
                {
                    System.out.print(j);
                }
            }
        }
    }
}

它工作得很好,直到~1亿,但当我去更大的数字的结果是不一致的。我看过质数的算法,就想试试

int型被限制为表示近似的数字。21亿年。过了这个数,整数就开始绕行。使用long数据类型,您将能够获得更高的值。

我不知道你到底想做什么,但我判断你想要识别素数,直到你指定的数字…如果这是您需要的,下面是代码:

public class PrimeNumbers {
public static void main(String[] args) {
        int number = 20000;
        int i = 1;
        int j = 0;
        while (i <= number) {
            j = 1;
            int counter = 0;
            while (j <= i){
                int divide = i / j;
                if (i % j == 0){
                    counter++;
                }
                j++;                
            }
            if (counter <= 2) {
                System.out.print(i + "   ");
            }
            i++;
        }
    }
}

相关内容

最新更新