根据我的讲师的说法,如果其除数之和等于自身,那么平衡数就是平衡的。例如:6是一个平衡数,因为1 + 2 + 3 = 6
这些是我的第一本作业,所以我很努力。
#include <iostream>
using namespace std;
int main() {
int num = 0;
int sum = 0;
cout << "Enter a number" << endl;
cin >> num;
if (num % (num-1) == 0 ){
for(int i =1; sum == 0; i++) {
sum += (num - i);
}
if (sum == num) {
cout << "Great Success" << endl;
}
else {
cout << "Wrong number" << endl;
}
}
}
最佳答案
先做数学。通常,代码有点混乱,这只是没有准备好足以编写代码的后果。在知道要编写什么之前,不要开始编写代码。坦白地说,从您的代码中可以看到,这与num-1
除以num
有关,但是,不清楚如何解决该问题。它的意图使它很难阅读,因此让我们忘记代码并从头开始...y
是x
的除数。 x % y == 0
的最大可能除数是x
。要获得所有除数,我们可以简单地检查从x/2
到2
的每个数字(x/2
始终被视为除数,因此无需检查)。
只有现在我们才能编写一些代码:
int x;
std::cin >> x;
int sum = 1;
for (int y = 2; y <= x/2; ++y){
if ( check_if_y_is_divisor) { sum += y; }
}
bool is_balanced = sum == x;
我在您必须填写的代码中留下了一个小孔(我只是不想在完成作业时放弃完整的解决方案)。