https://www.nowcoder.com/pat/2/problem/262
吐槽:我以为这道题还是需要先存起来再直接输出,但是我觉得这么多数,都存起来,我也不知道怎么做,而且每个数因子还那么多,其实挺麻烦的。稍微改了一丢丢,其实和之前一道题,因子个数挺类似的。有兴趣的可以看看这道题。
#include<cstdio>
#define N 1000005
int p[N]={0};
int prime[N];
int k=0;
void prime_table(){
for(int i=2;i<N;i++){
if(p[i]==0){
prime[k++] = i;
for(int j =i+i;j<N;j+=i){
p[j] = 1;
}
}
}
}
void ff(int n){
int num = 0,tmp = n;
for(int i=0;prime[i] <= n;i++){
while(tmp % prime[i] == 0){
num++;
tmp /= prime[i];
if(num == 1) printf("%d",prime[i]);
else printf(" * %d",prime[i]);
}
if(tmp == 1) break;
}
printf("\n");
}
int main(){
int n;
prime_table();
while(scanf("%d",&n) != EOF){
printf("%d = ",n);
ff(n);
}
return 0;
}