ZeroJudge A740: 質因數之和

求一個數全部質因數之和 (1 不算質數)。

比如:

  • 6 = 2 * 3,則輸出 2 + 3 = 5
  • 8 = 2 * 2 * 2,則輸出 2 + 2 + 2 = 6

範例測資

範例輸入範例輸出
每行一個正整數,x < 2000000000,以 EOF 為結束對應的因數和
19
32
19
10

解題思路

使用 For迴圈 判斷輸入整數的質數為多少 (只需要判斷到輸入測資的根號即可),建議使用 cin加速。依題目測資判斷 1 不判斷為質數,如果輸入資料為質數,則直接輸出該質數即可。

範例程式碼-ZeroJudge A740: 質因數之和

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(nullptr);
    int num;
    while (cin >> num)
    {
        int ans = 0, OG = num;
        for (int i = 2; i <= (sqrt(OG))+1; i++)
        {
            if (num % i == 0)
            {
                while (num % i == 0 && num > 1)
                {
                    ans += i;
                    num /= i;
                }
            }
        }
        if (num != 1) ans += num;
        cout << ans << endl;
    }
}

//ZeroJudge A740
//Dr. SeanXD

發佈留言