题意:给定三个数m,a,b。求两个素数p和q,同时满足pq <= m 和 a/b <= p/q <= 1,且p*q最大
思路:枚举。
#include <stdio.h>
#include <string.h>
#define N 10001
int prime[N],s[N];
int m,a,b,i;
void init(){
int i,j;
memset(prime,0,sizeof(prime));
for(i = 2;i<N;i++)//筛素数
if(!prime[i])
for(j=i<<1;j<N;j+=i)
prime[j] = 1;
for(i = 1,j=1;i<N;i++)
if(!prime[i])
s[j++] = i;
}
int main(){
freopen("a.txt","r",stdin);
init();
while(scanf("%d %d %d",&m,&a,&b) && a&&b&&m){
int i,j,x,y,res=0;
for(i = 1;s[i]*s[i]<=m;i++)
for(j = i;s[i]*s[j]<=m&&s[i]*b>=s[j]*a;j++)
if(res < s[i]*s[j]){
res = s[i]*s[j];
x = s[i];y = s[j];
}
printf("%d %d\n",x,y);
}
return 0;
}