hdu 1164 Eddy's research I
#include<stdio.h> #include<string.h> #include<math.h> bool visit[100000]; int prime[100000]; int n; int x; int init_pri() { memset(visit,true,sizeof(visit)); int num=0; for(int i=2;i<=n;i++) { if(visit[i]==true) { num++; prime[num]=i; } for(int j=1;(j<=num)&&(i*prime[j])<=n;j++) { visit[i*prime[j]]=false; if(i%prime[j]==0)break; } } //for(int i=0;i<50;i++) //printf("%d ",prime[i]); return 0; } int main() { n=70000; init_pri(); while(scanf("%d",&x)!=EOF) { int k=1; for(int i=1;i<=x;i++) { //printf("$%d$ ",prime[i]); if(x%prime[i]==0) { x/=prime[i]; if(k==1) { printf("%d",prime[i]); k=0; while(x%prime[i]==0) { x/=prime[i]; printf("*%d",prime[i]); } } else { printf("*%d",prime[i]); while(x%prime[i]==0) { x/=prime[i]; printf("*%d",prime[i]); } } } } printf("\n"); } return 0; }