題目連結 http://zerojudge.tw/ShowProblem?problemid=d010。
此題用迴圈從判斷1到 N/2 是否為 N 的因數,若是則加總(s)。接著比較加總結果與 N的大小關係來輸出對應的訊息。(那有沒有更好的演算法呢?)
程式碼:
#include <iostream>
#include <cmath>
using namespace std;
void prtMsg(const int &s, const int &n)
{
if( s == n )
cout << "完全數";
else if( s > n )
cout << "盈數";
else
cout << "虧數";
cout << endl;
}
int main()
{
int n;
while( cin >> n )
{
int s = 0;
for( int i = 1; i <= n/2; i++ )
{
if( n % i == 0 )
s += i;
}
prtMsg(s, n);
}
return 0;
}
沒有留言:
張貼留言