Eddy's research I
讲一个数分解成多个质素的乘积。
筛个素数在判断下就可以。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
int const M = 660000;
int prime[10000];
bool flag[M];
void Judge(){
memset(flag,false,sizeof(flag));
int cnt = 0;
for(int i = 2;i < M;i++){
if(!flag[i]){
prime[cnt++] = i;
for(int j = i;j < M;j += i){
flag[j] = true;
}
}
}
}
int main(){
/*clock_t clockBegin, clockEnd;
clockBegin = clock();
Judge();
clockEnd = clock(); 这俩行我是用来测试晒素数时间的*/
Judge();
int x;
while(~scanf("%d",&x)){
int xx[10000],cnt = 0,count = 0;
while(x != 1){
if(x % prime[cnt] == 0){
xx[count++] = prime[cnt];
x /= prime[cnt];
}
else cnt++;
}
for(int i = 0;i < count - 1;i++){
printf("%d*",xx[i]);
}
printf("%d\n",xx[count - 1]);
}
return 0;
}