2017-03-10 112 views
-1

我試圖輸出所有素數直到輸入的數字,我不知道爲什麼它不工作。我的代碼有什麼問題? C++

有人可以花時間來解釋我做錯了什麼嗎?

#include<iostream> 
#include<string> 
using namespace std; 
int main() 
{ 
    int number; 

    cout << "Enter Number: "; 
    cin >> number; 

    for (int a = 2;a <= number;a++) 
    { 

     bool prime = false; 

     for (int b = 2;b < a;b++) 
     { 
      if (a%b == 0) 
      { 
       prime = true; 
       break; 
      } 

      if (prime = true) 
       cout << a << endl; 
     }  
    } 

    system("pause"); 
    return 0; 
} 
+2

一對夫婦的明顯的一點:1)素數是一個*不能*除1和自身以外的任何數字整除,2)'='是賦值。當你想做比較時,你需要'=='來代替。 –

回答

1

在此代碼:

if (a%b == 0) 
{ 
    prime = true; 
     break; 
} 

你必須把它寫這樣的:

if (a%b == 0) 
{ 
    prime = false; 
     break; 
} 

也會改變bool prime = false;bool prime = true;

Finaly驗證碼:

if (prime == true) 
    cout << a << endl; 

必須是for loop

之外您的代碼將是這樣的美好:

#include<iostream> 
#include<string> 
using namespace std; 
int main() 
{ 
    int number; 

    cout << "Enter Number: "; 
    cin >> number; 

    for (int a = 2; a <= number; a++) 
    { 

     bool prime = true; 

     for (int b = 2; b < a; b++) 
     { 
      if (a%b == 0) 
      { 
       prime = false; 
       break; 
      } 
     } 

     if (prime == true) 
      cout << a << endl; 
    } 

    system("pause"); 
    return 0; 
} 

結果(示例):

enter image description here

0
for(i=2;i<=number;i++) 
{ 
     ct=0; 
     for(j=2;j<i;j++) 
     { 
      if(i%j==0) 
       { 
         ct=1; 
         break; 
       } 
     } 
     if(ct==0) 
     { 
      printf("%d \t",i); 
     } 
}