素因数分解
forループまわすだけだけど、10^15ぐらいの数でも全然いけるのね。
http://projecteuler.net/index.php?section=problems&id=3
$ ./a.out
600851475143
71 839 1471 6857
#include <iostream> #include <vector> using namespace std; typedef long long ll; int integerFactorization(ll num){ ll N = num; vector<ll> v; for(ll i=2; i*i<=N; i++){ if(num%i==0){ v.push_back(i); num/=i; i--; } } if(num!=1) v.push_back(num); for(int i=0; i<v.size(); i++){ cout << v[i] << " "; } cout << endl; return v.size(); } int main(){ ll n; while(cin >> n, n){ integerFactorization(n); } return 0; }