gpt4 book ai didi

c++ - 完全数程序中的逻辑错误

转载 作者:行者123 更新时间:2023-11-30 01:18:41 27 4
gpt4 key购买 nike

我想知道如何开发一个 C++ 程序,提示用户输入 2 个数字 n1n2,其中 n2 大于 n1。然后该程序用于确定n1n2 之间的所有完全数。如果一个整数的因子之和(包括 1(但不包括该数本身))等于该数本身,则该整数被称为完美数。例如,6 是一个完美数,因为 6 = 1 + 2 + 3

到目前为止,这是我想出的,它没有运行时/语法错误,但不幸的是逻辑错误:

#include <iostream>
using namespace std;

int main(){
int number, sum = 0, divi = 1, n1, n2;
cout<<" Please enter n1: ";
cin>>n1;
cout<<" Please enter n2: ";
cin>>n2;
number = n1;
while(number <= n2){

while(divi <=n2){

if (number%divi ==0)
sum+=divi;

divi++;
}

if(sum == number)
cout<<number<<endl;

number++;
}
return 0;
}

我只能使用 while 循环。你能发现任何逻辑错误吗?

最佳答案

  1. 您需要重置 divi到 1 和 sum在行 while(number <= n2){ 之后变为 0 . (否则 divisum 会错误增长)。

  2. 重新定义你内部的上限 whilewhile(divi < number){ . (您想检查 1 和 number 之间的因数,而不是它之后的因数。)

关于c++ - 完全数程序中的逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22379431/

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