C 完美的数字,带有嵌套循环问题
C++ Perfect Number With Nested Loops Issue
我要做的就是搜索一个完美的数字。一个完美的数字是其所有除数的总和,例如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_factors
, outer_loop
至 candidate_perfect_number
和 inner_loop
至 candidate_factor
或类似。
if语句之后:
cout << perfect_number;
cout << outer_loop;
if (perfect_number == outer_loop)
{
cout << perfect_number << " is a perfect number." << endl;
}
看看它们具有什么值
更新:
您的末端价值是多少?是0?,这就是为什么循环结束这么早
哦,这么多问题。
- 变量
perfect_number
永远不会更改。您的编译器旗了这个? - 外圈退出时将比结尾值多。你知道吗?
- 您不需要将
bool
值与true
或false
。
进行比较 - 您可以将
isAFactor
功能简化为return (outer % inner) == 0;
。 - 您可以用表达式替换
isAFactor
的呼叫((outer % inner) == 0)
。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 了解嵌套循环打印星号图案
- 无法掌握嵌套循环的写作技巧
- 在 c++ 中实现嵌套循环的更短方法吗?
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 毕达哥拉斯三重嵌套循环误解
- T(n) 表示嵌套循环
- 2 个嵌套循环的时间复杂度
- 嵌套循环背后的逻辑
- 使用 %s C++嵌套循环
- 为什么使用 2 个嵌套循环 O(n^2) 复杂度来解决二和问题,当只改变循环计数器逻辑时运行得更快?
- 按升序对数组进行排序嵌套循环问题
- 这个嵌套循环C++有什么问题?
- C 完美的数字,带有嵌套循环问题
- 如何解决嵌套循环程序的问题
- 简单的嵌套循环问题.*形状*
- 基于递归的 N 嵌套循环存在逻辑问题
- 深度嵌套循环的缓存中毒问题
- visual C++嵌套循环问题
- 删除与另一个成员相等的链表成员的嵌套循环中断.将问题隔离到一行