#14308: for 延平,另一種寫法


jeffreytsai (貓咪鯨魚)

學校 : 臺北市私立延平高級中學
編號 : 69067
來源 : [140.113.96.9]
最後登入時間 :
2024-09-11 13:51:32
a740. 质因数之和 -- 海豚原创 | From: [203.72.178.252] | 發表日期 : 2018-07-13 13:35

#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

const unsigned long long int SIZE = 20000001;
bool prime[SIZE];
vector <unsigned long long int> table;

int main() {
memset ( prime, true, SIZE );
unsigned long long int i, j, n, ans;

for ( i = 2; i < SIZE; ++i )
if ( prime[i] ) {
table.push_back ( i );

for ( j = 2 * i; j < SIZE; j += i )
prime[j] = false;
}

while ( cin >> n ) {
ans = 0;

for ( i = 0; i < table.size() && n > 1; ++i )
while ( 0 == n % table.at ( i ) ) {
ans += table.at ( i );
n /= table.at ( i );
}

cout << ( ( 1 == n ) ? ans : ans + n ) << endl;
}

}
Close
CPP

 

 
ZeroJudge Forum