hdu 2710 Max Factor 数学(水题)

本来是不打算贴这道水题的,自己却WA了三次。。

要考虑1的情况,1的质因子为1

思路:先打表 ,然后根据最大质因子更新结果

代码:

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstdio>
 4 #include<cstring>
 5 using namespace std;
 6 #define MAX 20000
 7 int p[MAX];
 8 int main()
 9 {
10         memset(p,0,sizeof(p));
11         p[1]=0;
12         for(int i=2;i<20000;i++)
13         {
14                if(p[i]==0)
15                   {
16                     int k=i*2;
17                     while(k<20000)
18                         {
19                            p[k]=1;
20                            k+=i;
21                         }
22                   }
23         }
24        
25        int n;
26        int ans;
27        int m;
28        int maxn;
29        while(scanf("%d",&n)!=EOF)
30        {
31                maxn=0;
32              while(n--)
33              {
34                      scanf("%d",&m);
35                      if(p[m]==0) 
36                      {
37                              if(m>maxn) {ans=m;maxn=m;}
38                              continue;
39                      }
40                      int temp=m/2;
41                      int j;
42                      for(j=temp;j>maxn;j--)
43                      {
44                              if(p[j]==0&&m%j==0) 
45                              {
46                                maxn=j;ans=m;
47                                break;
48                              }
49                      }
50                    
51              }
52              cout<<ans<<endl;
53        }
54        return 0;
55 }
View Code

 

posted on 2013-08-08 22:44  GyyZyp  阅读(180)  评论(0编辑  收藏  举报

导航