2017-09-02 19 views
3

私のプログラムは、ユーザー入力を読み込み、入力につながる一連の素数を出力するということです。たとえば、私が20を入力した場合、シーケンスは 7 ...などを出力するはずです 19に達するまで(20は素数ではないので) 唯一の問題は、プログラム1を実行するときです印刷時に。数字がプライムかどうかを調べる方法は次のとおりです。素数シーケンスJava

public boolean isPrime(int number) 
{ 
    int prime; 
    for(prime = 2; prime < number; prime++) 
    { 
     if (number % prime == 0) 
     { 
      if(number == 1) 
      { 
       return false; 
      } 
     return false; 
     } 
    } 
    return true; 
} 

私は複数のフォーラムやソリューションを読んでいますが、役に立たないようです。私は完全に立ち往生しています。

+0

それが素数 – nagendra547

答えて

0

number1の場合、ループは入力されません(ループは2から開始されます)。ループの前にテストを動かすと、ループの後にはprimeを使用しないので、ループにローカルにするでしょう。 2未満のすべての値を排除する(@luk2302が示唆されているように)少し数学は偶数値を排除し、唯一の平方根までテストする -

public boolean isPrime(int number) 
{ 
    if (number == 1) 
    { 
     return false; 
    } 
    for (int prime = 2; prime < number; prime++) 
    { 
     if (number % prime == 0) 
     { 
      return false; 
     } 
    } 
    return true; 
} 

次の例のように、ビットしかし、物事を最適化する可能性があります。

public boolean isPrime(int number) { 
    if (number < 2) { 
     return false; 
    } else if (number == 2 || number == 3) { 
     return true; 
    } else if (number % 2 == 0) { 
     return false; 
    } 
    double sq = Math.sqrt(number); 
    for (int prime = 3; prime <= sq; prime += 2) { 
     if (number % prime == 0) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

こんにちはを見つける最適化された方法ではありません!これは動作させたが、私は完全にこれが他のことを理解していない(number == 2 || number == 3){ return true; – xiomy528

+0

@ xiomy528 2と3が両方とも素数である場合、次のテストは偶数であり、ループして3より大きい値をチェックします。 –

1

トリックを行う必要があり、あなたの方法への最初の文として

if (number < 2) return false;

を置きます。

0

これは、1からnまでの素数を見つける簡単な方法です。 希望です。

int n=20; 
System.out.println("All Prime Numbers Between 1 to "+n); 
boolean isPrime; 

for (int i = 2; i <= n; i++) { 
    isPrime = true; 
    for (int j = 2; j <=Math.sqrt(i); j++) { 
     if (i % j == 0) { 
      isPrime = false; 
      break; 
     } 
    } 

    if (isPrime) 
     System.out.print(i + " "); 
} 

Ouput-

All Prime Numbers Between 1 to 20 
2 3 5 7 11 13 17 19 
関連する問題