2013-09-26 34 views
-1
#include <iostream> 
    using namespace std; 



    int main() 
    { 
     int count = 0; 

      for (int x=2; x < 100; x++) 

       for (int y=2; y < x; y++) 
       { 

       if (x % y == 0) 
       break; 
       else if (x == y + 1) 
         count++; 
         cout << x << " "; 

     cout << count; 
     system("pause") 
     return 0; 




    } 

我想打印質數,並打印出質數在2和100之間的數字。這應該是24.相反,我得到一噸重複素數,然後是數字24.我相信這是一個邏輯錯誤,只是沒有抓住它。試圖計算所有的素數,但我的輸出是瘋狂的

回答

0

首先,有語法錯誤。

其次,除非您知道自己在做什麼,否則始終使用大括號if/else - 這是與此相關的錯誤。

三,使用system()要求#include <cstdlib>。如果你的編譯器不允許(g++不允許),你的編譯器是鬆懈的。

四,pause不是一個獨立的程序,而是一個cmd.exe內建所以system()可能會失敗,具體取決於使用的編譯器/環境。整潔的方式是C++ keypress: getch, cin.get?

最後,你的算法非常不理想。例如。 y只需要上升到x/2+1,將數組/列表中已存在的素數存儲在數組/列表中並僅嘗試使用它們是合理的。

+0

編譯它不是問題,它運行良好我只是希望能夠計數質數的elseif語句捕獲他們,然後打印出總數 –

+0

大括號是否感謝你。 –