求一個數全部質因數之和 (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