gpt4 book ai didi

c++ - 为什么我得到一个无限循环(因素)?

转载 作者:行者123 更新时间:2023-11-28 04:46:56 27 4
gpt4 key购买 nike

The proper divisors of a positive integer, n, are all the positive integers that divide n evenly other than n itself. For example, the proper divisors of 16 are 1, 2, 4, and 8.

富数是大于 0 的整数,其真约数之和大于该整数。例如,12 很丰富,因为 1+2+3+4+6 = 16 大于 12。

亏数是大于 0 的整数,其真约数之和小于该整数。例如,8 不足,因为 1+2+4 = 7 小于 8。

完美数是大于 0 的整数,其真约数之和等于该整数。例如,6 是完美的,因为 1+2+3 = 6。

enter image description here

#include <iostream>
#include <cctype>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
int current;
int possible;
int sum=0;
int facts=0;

cin >> current;

the current is: 17 -5 246

      while(cin){
cout << current;
for (possible=1; possible<= current; possible++)
{
if(current%possible==0)
{
sum= sum + possible;
facts++;
if(sum-current > current)
cout << "is abundant and has" << facts << "factors" << endl;
if(sum-current < current)
cout << "is deficient" << endl;
if(current < 2)
cout << "is not abundant, deficient or perfect" << endl;
if(current == sum-current)
cout << "is perfect" << endl;

}
}
}

return 0;
}

This is what I should be getting: 17 is deficient -5 is not abundant, deficient or perfect. 246 is abundant and has 8 factors instead I get an infinite loop

最佳答案

问题是您正在使用 cin 作为 while 循环的条件,因为循环将继续执行直到没有更多要读取的数据。

引用What's the difference between while(cin) and while(cin >> num)

而是在 while 循环中输入当前数字,即

while(cin >> current){
/* Your code */
}

Note:

To stop reading input from user in Linux terminal, enter Ctrl+D

而且我还看到你的逻辑不对,所以你可能会得到错误的结果,这个你必须自己解决。

关于c++ - 为什么我得到一个无限循环(因素)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105024/

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