没有错误,但没有输出

时间:2012-11-01 17:08:23

标签: c++ math

请查看以下代码

#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)

但在这里,一切都是正确的,但我没有得到任何结果,而不是打印我在main方法中打印的内容。

为什么会这样?无论如何,这不是家庭作业。请帮忙。

1 个答案:

答案 0 :(得分:6)

您的列表位于全局变量中,因此它还包含所有先前数字的除数。在isPerfect

中在本地声明

正如您随后发现的那样,numList也是如此。