#include <iostream>
using namespace std;
int main()
{
long n,n2,a,b,S=0;
while( cin >> n)
{
if(n==1) break;
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
a=i;
b=n/i;
if(a>b)break;
S=S+a+b;
}
if(a==b) break;
}
S=S-n;
if(S>n) cout << "盈數" << endl;
else if(S==n) cout << "完全數" << endl;
else if(S<n) cout << "虧數" << endl;
S=0;
}
return 0;
}
#include
using namespace std;
int main()
{
long n,n2,a,b,S=0;
while( cin >> n)
{
if(n==1) break;
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
a=i;
b=n/i;
if(a>b)break;
S=S+a+b;
}
if(a==b) break;
}
S=S-n;
if(S>n) cout << "盈數" << endl;
else if(S==n) cout << "完全數" << endl;
else if(S S=0;
}
return 0;
}
你的程式在算因數的時候如果剛好是次方數的話平方數就會多加一次
例如: 4 9 16 25 .....
前面這些因為剛好都不會超過本身但
256除了自己本身所有因數和=255
如果多加一個平方數16就會錯誤了。