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