除数之和不大于数字的确定数字的因素时,程序将不接受大于10000的限制

时间:2019-03-24 05:01:12

标签: c++

当我将限制从100更改为1,000,000时,它不会打印出所有数字,它会以5位数字停止,不会再计算出更高的数字。为什么会这样?

#include <iostream>
using namespace std;

int main(int argc, char* argv[]) 
{

const int limit = argc > 1 ? atoi(argv[1]) : 100;
const int badness = argc > 2 ? atoi(argv[2]) : 1;


for (int num = 2; num < limit; num++) {

    int total = 1;

    for (int factor = 2; factor * factor <= num; factor++) {

        if (num % factor == 0) {
            total += factor;


            if (factor * factor != num) {
                total += (num / factor);
            }
        }


        }

        if (abs(num - total) <= abs(badness)) {

            cout << num << " " << flush;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

查看此https://en.wikipedia.org/wiki/C_data_types

可能是因为您使用的是整数。

尝试使用long或无符号long