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; }