我是C ++问题的初学者。我尝试尝试确定数字是否理想的问题。我的代码似乎只对一个数字6有效。对于所有其他数字,它都像数字28一样失败。我找不到我要去哪里。请咨询
#include <iostream>
using namespace std;
int main()
{
int n;
int sum = 1;
cout<<"enter a number : " <<endl;
cin>>n;
for(int i =2;i<=n-1;i++)
{
if(n%i != 0)
{
break;
}
else
{
sum = sum + i;
}
}
if(sum == n)
{
cout<<"Perfect Number"<<endl;
}
else
{
cout<<"Not a perfect number"<<endl;
}
return 0;
}
答案 0 :(得分:1)
您的问题在这里:
for(int i =2;i<=n-1;i++)
{
if(n%i != 0)
{
break;
}
else
{
sum = sum + i;
}
}
使用break
,您将停止for
循环的整个迭代,这意味着在第一个非除数的数字之后,即n%i != 0
等于true时,您正在中断循环并继续执行if(sum == n)
。我想您错在哪里,因为您不想添加不是除数的i
,因此您“急于”不计其数。我猜您将其与continue
混合在一起,后者会返回到for
条件检查,并且如果条件仍然为真,将继续使用i+1
执行。
仍然将加法打包到一个else
分支中,这意味着只有在if
之前的n%i != 0
为假时,才可以以任何一种方式进行求和,这意味着如果它的a除数。这就是您不需要continue
或break
的原因,t.Context.prototype._defineProperty = function(e, n) {
t.isUndef(this[n]) && Object.defineProperty(this, n, {
get: function() {
return "function" == typeof e[n] ? e[n].bind(e) : e[n]
},
set: function(t) {
e[n] = t // error is here on the t
}
})
}
不会对您造成太大的影响,在这种情况下,您无需编程。