Prime编号程序不起作用

时间:2016-05-24 08:10:39

标签: java primes

我正在尝试用Java创建一个简单的程序,将所有素数(跳过数字2)输出到数字AggregationLevelConfiguration.HelperCodeType。它没有用,我没有想法。如果有人可以查看我的代码并告诉我问题是什么,我会非常感激。

n

3 个答案:

答案 0 :(得分:0)

只需在notAPrime内声明for(int i = n; i > 2; i--),使其成为每个候选人的本地候选人。 现在你增加notAPrime并且永远不会将其重置为零。

答案 1 :(得分:0)

试试这个

public class primeNum {

public static void main(String[] args) {
    int n = 50;
    boolean prime;

    System.out.println("All prime numbers before number " +n+ " are : ");
    for(int i = n; i > 2; i--){
        prime = true;
        for(int j = 2; j < i; j++){
            if(i % j == 0){
              prime = false;
            }
        }
        if(prime){
            System.out.println(i);
        }
    }
}

}

请注意,我将“notAPrime”变量从int更改为boolean并更改为一个告诉您其含义的名称。如果你只增加“notAPrime”整数,你永远不会得到任何想要的结果。 顺便说一下,这是一个修补程序,你得到了一个更正的代码的第一种形式。请记住,2也是素数,你的代码忽略了这一点。 只需要工作一点;)

答案 2 :(得分:-1)

你的for循环中缺少“中断”。

public class primeNum {

    public static void main(String[] args) {
        int n=50;
        int notAPrime=0;

        System.out.println("All prime numbers before number " +n+ " are : ");
        for(int i=n; i>2; i--){
           for(int j=2; j<i; j++){
               if(i%j==0){
                  notAPrime++;
                  break; //your program is missing this statement
               }
            } 
            if(notAPrime==0){
               System.out.print(i + " ");                   
            }   
            notAPrime=0;     //In your program it is inside the if statement which makes it incorrect.
        }
    }
}

输出: 50号之前的所有素数都是: 47 43 41 37 31 29 23 19 17 13 11 7 5 3

您可以通过进行以下更改来提高您的计划效率:

public class primeNum {

    public static void main(String[] args) {
        int n=50;
        int notAPrime=0;

        System.out.println("All prime numbers before number " +n+ " are : ");
        for(int i=n; i>2; i--){
           if(i%2==0){
               continue;
           }
           for(int j=3; j<i; j+=2){  
               if(i%j==0){
                  notAPrime++;
                  break;
               }
            } 
            if(notAPrime==0){
               System.out.print(i + " ");                   
            }   
            notAPrime=0;     
        }
    }
}