hdu 1164 Eddy's research I

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<string>
 5 #include<cmath>
 6 #include<algorithm>
 7 using namespace std;
 8 #define MAX 65535
 9 int prime[MAX+5];
10 bool vis[MAX+5];
11 int index=0;
12 void get_prime(){
13     memset(vis,false,sizeof(vis));
14     int i=2;
15     //int sum=0;
16     for(;i<=MAX;i++){
17         if(!vis[i]){
18             prime[index++]=i;
19         }
20         int j=0;
21         for(;j<index&&i*prime[j]<=MAX;j++){
22             vis[i*prime[j]]=true;
23             //sum++;
24             if(i%prime[j]==0){
25                 break;
26             }
27         }
28     }
29     /*i=0;
30     for(;i<index;i++){
31         cout<<i<<' '<<prime[i]<<endl;
32     }*/
33     //cout<<"1"<<' '<<sum<<endl;
34 }
35 int main()
36 {
37     //freopen("INPUT.txt", "r", stdin);
38     get_prime();
39     int n;
40     while(cin>>n){
41         int j=0;
42         for(;j<index&&n>1;j++){
43             if(n%prime[j]==0){
44                 //cout<<j<<"***"<<prime[j]<<endl;
45                 n/=prime[j];
46                 cout<<prime[j];
47                 while(n%prime[j]==0){
48                     n/=prime[j];
49                     cout<<"*"<<prime[j];
50                 }
51                 break;
52             }
53         }
54         for(;j<index&&n>1;j++){
55             while(n%prime[j]==0){
56                     n/=prime[j];
57                     cout<<"*"<<prime[j];
58                 }
59         }
60         cout<<endl;
61     }
62     return 0;
63 }

素数分解与输出,注意输出格式

posted @ 2015-02-03 21:27  Deribs4  阅读(147)  评论(0编辑  收藏  举报