2012-11-01 164 views
0

請看看下面的代碼沒有錯誤,但沒有輸出

#include <iostream> 
#include <iomanip> 
#include <vector> 
#include <string> 

using namespace std; 

void isPerfect(int); 

vector<int> list; 
string numList = ""; 


int main() 
{ 
    cout << "Number" << setw(10) << "Divisors" << setw(15) << "Calculation"; 

    for(int i=1;i<=1000;i++) 
    { 
     isPerfect(i); 
    } 
} 


void isPerfect(int number) 
{ 

    int calc = 0; 

    for(int i=1;i<=(number/2);i++) 
    { 
     if(number%i == 0) 
     { 
      list.push_back(i); 
      //numList = numList + string. + ","; 
     } 
    } 

    for(size_t i=0;i<list.size();i++) 
    { 
     calc = list[i] + calc; 
    } 

    if(calc == number) 
    { 
     cout << number << setw(10) << numList << setw(15) << calc << endl; 
    } 
} 

在這裏,我試圖找到「完全數」(完美的數字 - 如果它的總和的約數,包括1 ,但不是它自己,等於數字,它是一個完美的數字。例如6)

但在這裏,一切都是正確的,但我沒有得到任何結果,而不是打印我在主要打印的內容方法。

這是怎麼發生的?無論如何,這不是一項家庭作業。請幫忙。

+0

你應該削減你的全局變量的習慣。兩者都只用於一個功能。 – chris

回答

6

您的列表位於全局變量中,因此它還包含之前所有數字的除數。在本地聲明isPerfect

隨後您會發現,numList也是如此。

+4

不錯的地方。另外'list'是一個向量的壞名字。 –

+0

太棒了!謝謝 :) –

相關問題