程序打印前5个完美数字,是打印2096128 ?? C ++

时间:2018-02-16 20:18:39

标签: c++ perfect-numbers

所以这个程序会打印出完美的数字,但其中一个,2096128正在打印出于某种原因?非常感谢帮助搞清楚发生了什么!谢谢!我无法弄清楚为什么一个非完美数字会在序列中找到它!

String jsonString = "{\"status_code\": 200,\"status_message\": \"OK\",\"response\":{\"applications\":{\"345\": \"A\",\"125\": \"B\",\"458\": \"C\",\"434\": \"D\",\"512\": \"E\",\"645\": \"F\"}}}";
JsonPath jsonPath = new JsonPath(jsonString);
Map<String, String> applicationsMap = jsonPath.getMap("response.applications");
Set<String> applicationKeys = applicationsMap.keySet();
for(String key:applicationKeys){
    System.out.println("Key value: " + key + ", Element value: " + applicationsMap.get(key));
}

1 个答案:

答案 0 :(得分:0)

你使这项任务变得非常复杂。

这是我想出的:

#include <iostream>

using namespace std;

bool isPerfect(long long n);

int main() 
{
    int count = 5;
    long long sum = 1;
    for (int i = 3; count >= 0; i += 2)
    {
        sum += i * i * i;

        if (isPerfect(sum))
        {
            cout << sum << endl;
            count--;
        }
    }

    system("pause");
    return 0;
}
bool isPerfect(long long n)
{
    int sum = 0;

    for (int i = 1; i < n; i++)
    {
        if (n % i == 0)
            sum += i;
    }

    return sum == n;
}

这肯定不是完美的,但会为5个数字做。考虑到超过5个数字它会非常慢。