2013-01-05 133 views
0

我需要創建一個程序,以'N'作爲輸入,並顯示前N個素數,最後將它們相加... 這是我的代碼,但它不起作用。 (它循環在:「if((num == 2)||(num == 3))」)總結前N個素數

你能幫助我嗎? 在此先感謝。我不能用函數和數組。

代碼:

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int n, num = 1, rest, cont = 0, sum = 0; 
    bool exit = false; 
    int e = 1; 

    cout<<"How many prime number do you want to show? "; 
    cin>>n; 

    while (cont <= n) 
    { 
     num++; 
     if ((num == 2) || (num == 3)) 
     { 
      cout<<num<<endl; 
      sum += num; 
      cont++; 
     } 
     else if (num%2 == 0) 
     { 
     } 
     else 
     { 
      bool exit = false; 
      int div = 3; 
      while (!exit) 
      { 
       rest = num%div; 

       if (num == div) 
       { 
        exit = true; 
        cout<<num<<endl; 
        sum += num; 
        cont++; 
       } 

       if (rest == 0) 
        exit = true;      
       div++; 
      } 
     }  
     num++; 
    }  
    cout<<"Sum: "<<sum<<endl; 

    return 0; 
} 
+4

「我不能使用的功能。」 - 那麼'_tmain()'符號在那裏做什麼? – 2013-01-05 20:42:13

+2

「它不起作用」沒有提供信息。對於任何願意幫助你的用戶來說都沒用。 – Jack

+0

「不起作用」不是問題。請優化您的問題以獲得一個很好的答案。 – Khalefa

回答

1

首先,你使用一個變量名resto代替rest,這與你宣佈它的名字(if (resto == 0))。

其次,你增加num兩次:在循環的開始和結束。刪除最後的num++它應該會更好。

第三,將cont初始化爲1而不是0,或者它將計算第一個N + 1個素數而不是前N個素數之和。

這裏是你的代碼的固定版本:

#include <iostream> 

using namespace std; 

int main() 
{ 
    int n, num = 1, rest, cont = 1, sum = 0; 
    bool exit = false; 
    int e = 1; 

    cout<<"How many prime number do you want to show? "; 
    cin>>n; 

    while (cont <= n) 
    { 
     num++; 
     if ((num == 2) || (num == 3)) 
     { 
      cout<<num<<endl; 
      sum += num; 
      cont++; 
     } 
     else if (num%2 == 0) 
     { 
     } 
     else 
     { 
      bool exit = false; 
      int div = 3; 
      while (!exit) 
      { 
       rest = num%div; 

       if (num == div) 
       { 
        exit = true; 
        cout<<num<<endl; 
        sum += num; 
        cont++; 
       } 

       if (rest == 0) 
        exit = true; 

       div++; 
      } 
     } 
    } 
    cout<<"Sum: "<<sum<<endl; 

    return 0; 
} 
+0

謝謝,我刪除了最後一個num ++,它可以工作。 我是意大利人,resto等於休息(英語)。在發佈這個問題之前,我更改了變量的所有名稱,只是因爲任何不懂意大利語的人都可以理解我的代碼,但我忘記更改所有名稱。 –

+0

不客氣。你介意接受我的答案,如果它的工作? –

+0

我剛接受它,我修改了我的最後一條評論。 –