2014-02-24 57 views
1

任何人都可以幫助我嗎?我試圖測試素質,但我似乎無法得到這個工作。無論什麼原因,只要我運行它,它運行良好,只要我從一個不是素數的數字開始。然而,在運行不是素數的東西之後,輸出爲「0 1」而不是0。似乎如果我從非質數的數字開始,則所有內容都是「0 1」,而不是正確的輸出。在C++中測試Primality

#include <iostream> 
using std::cin; 
using std::cout; 
using std::endl; 
#include <cmath> 

int main() 
{ 
    int num; 
    int x = 2; 
    //cin >> num; 
    while(cin >> num)   //(x<=num-1) 
    { 

     for(x<=num-1; x++;) 
     { 
      if(num%x==0) 
      { 
       cout << "0" << endl ; //1 is prime, 0 is not prime 
       break; 
      } 

      if(x==num) 
      { 
       cout << "1" << endl ; 
       break; 
      } 
     } 

     if(x==num) 
     { 
      cout << "1" << endl ; 
     } 

    } 

    return 0; 
} 
+1

調試器說了什麼? – pm100

+2

'對於(x <= num-1; x ++;)'錯誤位置的分號。嘗試'for(; x <= num-1; x ++)' –

+0

如果您將最後一條評論與一個答案組合在一起,那麼您可以得到解決方案。刪除第二個cout並修復你的for循環語法。 –

回答

1

以及你有COUT < <「1」兩次,你可能並不意味着

0
for(x<=num-1; x++;) 

中的分號在錯誤的地方,所以不是在其下執行陳述的條件x<=num-1應該發生你說狀態x<=num-1表達式只是評估沒有影響,然後在質數的情況下x遞增,直到

if(num%x==0) 

是真的,因爲實際上num==x在這一點上。然後你打印你的'0',然後打印'1',因爲

if(x==num) 
{ 
    cout << "1" << endl ; 
} 

是正確的。