素因数分解
説明を書くのが面倒くさいので、とりあえずソースコードだけ載せておきます。
小さい数なら問題なく分解できるはずです。
小さい数なら問題なく分解できるはずです。
#include <iostream>
#include <vector>
using namespace std;
//素因数分解
vector<int> f(int x){
int d=3, q;
vector<int> vc;
while( x >= 4 && (x % 2) == 0 ){
vc.push_back( 2 );
x /= 2;
}
q = x / d;
while( q >= d ){
if( (x % d) == 0 ){
vc.push_back( d );
x = q;
}else{
d += 2;
}
q = x / d;
}
vc.push_back( x );
return vc;
}
int main(){
int x;
vector<int> vc;
while( cin >> x , x ){
vc.clear();
vc = f(x);
cout << x << " = " ;
for(int i=0 ; i<vc.size() ; i++){
cout << vc[i] << "";
(i==vc.size()-1)? cout << endl : cout << " * ";
}
}
}
...