思路
对于每一个从小到大每一个素数,如果该素数是n的因子,则对该素数计数,并且n除以该素数,一直到n不再是该素数的倍数为止。
cpp代码
#include<bits/stdc++.h>
using namespace std;
bool j[10010] ; //判断是否为素数,当j[i]为true时代表i为合数;
void init(){//对j数组进行初始化
for(int i = 2 ; i < 10010 ; i ++ ){
if(!j[i]){
for(int k = 2*i ; k < 10010 ; k +=i ){
j[k] = true ;
}
}
}
}
long N ;
int main() {
init() ;
cin >> N ;
cout << N << '=' ;
if(N == 1 ) cout << "1" ;
else{
for(int i = 2 ; N != 1 && i <= 10000 ; i++ ){
if(j[i]) continue ; //跳过合数
int cnt = 0 ;
while( N % i == 0 ){
N /= i ;
cnt ++ ;
}
if(cnt) cout << i ; //cnt!=0说明i为原来n的因子
if(cnt > 1 ) cout << '^' << cnt ;
if(N != 1 && cnt ) cout << '*' ;
}
}
return 0 ;
}