hdu 1239 找素数对
题意:给你一个大于4的整数m和一个真分数a/b,求最佳素数对p、q,使得a/b<=p/q<=1且pq<=m。最佳即为满足条件的pair中pq最大的一对。
各种打表
zsd:素数的提取
#include<iostream> #include<cstring> using namespace std; int main() { int prime[2000],k; int num[10001]; int i,l; int t; int m; double a,b; double ro; int w,h; double max; memset(num,0,sizeof(num)); num[0]=num[1]=1; k=0; for(i=2;i<=10000;i++) if(num[i]==0) { for(t=2*i;t<=10000;t+=i) num[t]=1; prime[k]=i; k++; } while(cin>>m>>a>>b&&(m!=0||a!=0||b!=0)) { ro=a/b; max=0; for(i=k-1;i>=0;i--) { for(l=i;l>=0;l--) { if(prime[i]*prime[l]>m||(double)prime[l]/prime[i]<ro) continue; if(prime[i]*prime[l]>max) { w=prime[l]; h=prime[i]; max=prime[i]*prime[l]; } } } cout<<w<<" "<<h<<endl; } return 0; }