这题首先可以进行素数的打表,一开始一直错,发现是自己的素数表大的有问题,打完表接下来就很简单的进行暴力就行了。
#include<stdio.h>
#include<string.h>
bool sushu[100005];
void prime(){
memset(sushu,true,sizeof(sushu));
sushu[0]=sushu[1]=false;
for(int i = 2;i*i < 100005;i++)
if(sushu[i]){
for(int j=i*i;j<100005;j+=i){
sushu[j]=false;
}
}
}
int main(){
int m,a,b;
prime();
while(scanf("%d %d %d",&m,&a,&b),m,a,b){
double t = a*1.0/b;
int p = 1,q = 1;
for(int i = 2;i<=m/2;i++){
if(sushu[i] == false)
continue;
for(int j = 2;j<=i && i*j <=m;j++){
if(j*1.0/i < t || sushu[j] == false)
continue;
if(i*j > p*q){
p = i;
q = j;
}
}
}
printf("%d %d\n",q,p);
}
return 0;
}