2016-09-25 2 views
-2

私はしばらくの間、javaをプログラミングしました。私はC++を始めました。 私は素数チェッカーを作ることにしましたが、何らかの理由でそれが素数であれば印刷しません。素数チェッカーエラーC++

#include <iostream> 

using namespace std; 

int prime; 

int main() 
{ 
    while(true) 
    { 
    int primeChecker; 
    cout << "Enter a number to check if it is prime" << endl; 

    cin >> prime; 

    for(int i = 2; i <= (1/2)*prime; i++){ 
     cout << "Working" << endl; 
     if(prime % i == 0){ 
      cout << "This number is not prime" << endl; 
      primeChecker+=1; 
     } 
    } 
    if(primeChecker == 0){ 
     cout << "This number is prime" << endl; 
    } 
    } 
    return 0; 

} 
+3

'(1/2)'は '0'です。 – LogicStuff

+0

boolを返す関数isPrimeを作成することができます。入出力コードは単にそれを呼び出すことができ、簡単なif/elseチェックを持つことができます。そしておそらくupper_bound = sqrt(number)が必要でしょう。 %2を確認してから3で始まり、2で気を付けることができます(2以外の偶数をチェックする理由はありません)。私は、あなたが変数が何であるかを知らないときにあなたの変数の名前を「プライム」にしたり、それをグローバルにすることを好まないのです。また、入力を検証し、終了する方法を提供することもあります。 –

答えて

2

あなたはまた、私は< =プライム/ 2の代わりにI < =(1/2)プライムの書き込み0でprimecheckerを初期化する必要があります。また、数字が素数でないことがわかったときにbreakを使用するべきです。また、あなたは、私は、これはあなたがこのコードは、値が大きいほど、より多くの時間がかかります

#include <iostream> 

using namespace std; 

int prime; 

int main() 
{ 
    while(true) 
    { 
     int primeChecker=0; 
     cout << "Enter a number to check if it is prime" << endl; 
     cin >> prime; 
     if(prime==1) 
     { 
      cout << "This number is not prime" << endl; 
     } 
     else 
     { 
      for(int i = 2; i <= prime/2; i++) 
      { 
       cout << "Working" << endl; 
       if(prime % i == 0) 
       { 
       cout << "This number is not prime" << endl; 
       primeChecker+=1; 
       break; 
       } 
      } 
      if(primeChecker == 0) 
      { 
       cout << "This number is prime" << endl; 
      } 
     } 
    } 
    return 0; 
} 

を書込み禁止しようとした何だと思います。1.かどうかを確認する必要があります。私はプライムの平方根を調べて、その数が素数であるかどうかを確認することをお勧めします。がんばろう!