高中生程式解題系統:盈數、虧數和完全數

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 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;
}

沒有留言: