gpt4 book ai didi

C++ 完美数。需要一些帮助修改

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:34 25 4
gpt4 key购买 nike

我需要一些帮助来修改这个。它只显示 0 作为温度。谢谢。

// A program to determine whether the input number is a perfect number
// A perfect number is defined by the sum of all its positive divisors excluding itself
// 28: 1+2+3+7+14 = 28.

int perfect, limit, divisor;

cout << "Please enter a positive integer in order to define whether it is a perfect integer or not: " ;
cin >> perfect;
cout << endl;

int temp = 0;
int prevtemp = 0;
limit = 1;
divisor = 1;
while (limit < perfect)
{

if ((perfect % divisor) == 0)
{
divisor = prevtemp;
temp = prevtemp + temp;
}

limit++;
divisor++;
}

if (perfect == temp)
cout << "Your number is a perfect number!" << endl;
else
cout << "Your number is not a perfect number" << endl;

return 0;

最佳答案

您永远不会将 prevtemp 设置为 0 以外的任何值,因此将它添加到 temp 不会执行任何操作。

我相信你的意思是

if ((perfect % divisor) == 0) 
temp += divisor; // not "divisor = prevtemp;"

“temp = prevtemp + temp”这一行也应该用这个解决方案删除;不再需要 prevtemp 变量。

另外,没有必要保留单独的 limitdivisor 变量,因为它们总是相同的。只需删除 limit 并将循环条件更改为使用 divisor

此外,正如 Mark Byers 指出的那样,如果将循环重构为 for 循环而不是 while,则循环会更易于理解。

关于C++ 完美数。需要一些帮助修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com