C 完美的数字,带有嵌套循环问题

C++ Perfect Number With Nested Loops Issue

本文关键字:嵌套循环 问题 完美 数字      更新时间:2023-10-16

我要做的就是搜索一个完美的数字。一个完美的数字是其所有除数的总和,例如6 = 1 2 3。

基本上我在这里要做的是要求2个数字,并在这两个数字之间找到一个完美的数字。我的功能可以测试可分裂性和2个嵌套环。

我的问题是我没有任何结果。我已经修改了它&似乎找不到任何错误。编译器没有射出任何错误。

什么可能是什么?

#include <iostream>
using namespace std;
bool isAFactor(int, int);
int main()
{
int startval;
int endval;
int outer_loop;
int inner_loop;
int perfect_number = 0;
cout << "Enter Starting Number: ";
cin >> startval;
cout << "Enter Ending Number: ";
cin >> endval;
for(outer_loop = startval; outer_loop <= endval; outer_loop++)
{
    for(inner_loop = 1; inner_loop <= outer_loop; inner_loop++)
    {
        if (isAFactor(outer_loop, inner_loop) == true)
        {
            inner_loop += perfect_number;
        }
    }
if (perfect_number == outer_loop)
{
    cout << perfect_number << " is a perfect number." << endl;
}
else
{
    cout << "There is no perfect number." << endl;
}
}
system("PAUSE");
return 0;
}
bool isAFactor(int outer, int inner)
{
if (outer % inner == 0)
{
    return true;
}
else
{
    return false;
}

inner_loop += perfect_number;应该是 perfect_number += inner_loop;

还有其他问题 - 您需要将perfect_number重置为每个外循环中的零,并且如果范围中的数字都不是完美的,则可能应该打印消息"There is no perfect number."不是完美的。

我建议您将 perfect_number重命名为 sum_of_factorsouter_loopcandidate_perfect_numberinner_loopcandidate_factor或类似。

if语句之后:

cout << perfect_number;
cout << outer_loop;
if (perfect_number == outer_loop)
{
    cout << perfect_number << " is a perfect number." << endl;
}

看看它们具有什么值

更新:

您的末端价值是多少?是0?,这就是为什么循环结束这么早

哦,这么多问题。

  1. 变量perfect_number永远不会更改。您的编译器旗了这个?
  2. 外圈退出时将比结尾值多。你知道吗?
  3. 您不需要将bool值与truefalse
  4. 进行比较
  5. 您可以将isAFactor功能简化为return (outer % inner) == 0;
  6. 您可以用表达式替换isAFactor的呼叫 ((outer % inner) == 0)