hdu 1239 素数水题

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1239

一道水题,素数筛选即可

View Code
 1 #include<iostream>

 2 #include<cmath>

 3 const int N=11000;

 4 using namespace std;

 5 bool mark[N];

 6 int prime[N];

 7 

 8 //素数筛选

 9 void sieve_prime(){

10     memset(mark,true,sizeof(mark));

11     mark[0]=mark[1]=false;

12     for(int i=2;i<sqrt(N*1.0);i++)if(mark[i]){

13         for(int j=i*i;j<N;j+=i){

14             mark[j]=false;

15         }

16     }

17 }

18     

19 int main(){

20     int m,a,b;

21     while(scanf("%d%d%d",&m,&a,&b)!=EOF){

22         if(m==0&&a==0&&b==0)break;

23         double temp=a*1.0/b;

24         sieve_prime();

25         int k=0,max=0,p=2,q=2;

26         for(int i=2;i<N;i++)if(mark[i]){

27             prime[k++]=i;

28         }

29         for(int i=0;i<k;i++){

30             for(int j=i;j<k;j++){

31                 if(prime[i]*prime[j]>max&&prime[i]*prime[j]<=m&&prime[i]*1.0/prime[j]>=temp){

32                     p=prime[i];

33                     q=prime[j];

34                     max=prime[i]*prime[j];

35                 }

36                 if(prime[i]*prime[j]>m)break;

37             }

38         }

39         printf("%d %d\n",p,q);

40     }

41     return 0;

42 }

 

 

你可能感兴趣的:(HDU)