打印小于n的所有素数

时间:2016-02-18 17:51:19

标签: java

我写了以下代码:

package primelessthanN;



public class Main {

    public static void main(String[] args) {


        int j;
        int n;
        n = 10;

        for (j = 3; j <=n; j++) {
            if (isPrime(j))
                System.out.println(j);
        }
    }

    private static boolean isPrime(int m) {


        for (int i = 3; i <=m; i++) {
            if (m % i == 0)
                return false;
        }
        return true;
    }
}

我不知道为什么它不起作用而且我有点紧张。

请你们帮助我,告诉我这是我的错误吗?

1 个答案:

答案 0 :(得分:1)

有两个问题:

  1. main中,你从3迭代到sqrt(n),但你必须从2开始(这是一个素数)并迭代到n

    for (j = 2; j <=n; j++) {
       if (isPrime(j)) {
           System.out.println(j);
       }
    }
    
  2. isPrime中,您必须从2开始迭代,因为它也是素数。

    for (int i = 2; i <= sqrt(m); i++) {
        if (m % i == 0)
            return false;
    }
    return true;