CDOJ--1237
原体连接:http://acm.uestc.edu.cn/problem.php?pid=1237
分析:质因子单增;在寻找下一个质因子时,从前一个开始。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 int isprime(int s,int n) 7 { 8 int i; 9 for(i=s;i<=sqrt(n);i=i+2) 10 { 11 if(n%i==0)return i; 12 } 13 return 1; 14 } 15 int main() 16 { 17 int t,n,m,ans[1000]; 18 scanf("%d",&t); 19 while(t--) 20 { 21 int cnt=0,p; 22 memset(ans,0,sizeof(ans)); 23 scanf("%d",&n); 24 m=n; 25 while(n%2==0) 26 { 27 ans[cnt++]=2; 28 n/=2; 29 } 30 if(n>2) 31 for(int i=3;;) 32 { 33 if(n==1)break; 34 if(n%i==0) 35 { 36 ans[cnt++]=i; 37 n/=i; 38 } 39 else 40 { 41 p=isprime(i,n); 42 if(p==1) 43 { 44 ans[cnt++]=n; 45 break; 46 } 47 else i=p; 48 } 49 } 50 printf("%d=%d",m,ans[0]); 51 for(int i=1;i<=cnt-1;i++) 52 printf("*%d",ans[i]); 53 printf("\n"); 54 } 55 return 0; 56 }