hdu 1262 寻找素数对
2013-09-25 15:03
281 查看
题意:输入一个偶数n,找出最接近的一对素数x,和y,使得x+y=n;
题解:题中n<=10000,而输入时输入到文本末。所以可以预处理数据,减少每次查询的时间。
先找出小于10000的所有素数。这个有模板,两个for解决。之后枚举下所有对素数,将差最小的对存在结构体数组里。查询的时候直接调用数组即可。
耗时:0MS
题解:题中n<=10000,而输入时输入到文本末。所以可以预处理数据,减少每次查询的时间。
先找出小于10000的所有素数。这个有模板,两个for解决。之后枚举下所有对素数,将差最小的对存在结构体数组里。查询的时候直接调用数组即可。
耗时:0MS
#include <cstdio> #include <cstring> #include <cmath> #include <queue> #include <iostream> #include <algorithm> using namespace std; #define LL __int64 const int maxn=1e4+10; int prime[maxn],t,vis[maxn]; struct node{ int a,b; node(){a=0;b=10000;} }e[maxn]; void init() { int i,j,k; memset(vis,0,sizeof(vis)); t=0; prime[t++]=1; for(i=2;i<maxn;i++)//找出小于10000的所有素数。 { if(!vis[i]) { for(j=i*i;j<maxn;j+=i) vis[j]=1; prime[t++]=i; } } for(i=0;i<t;i++) { for(j=i;j<t;j++) { int temp=prime[i]+prime[j]; if(temp>10000)break; if(prime[j]-prime[i]<e[temp].b-e[temp].a) { e[temp].a=prime[i]; e[temp].b=prime[j]; } } } } int main() { init(); int n; while(cin>>n) { cout<<e .a<<" "<<e .b<<endl; } return 0; }
相关文章推荐
- Hdu 1262 寻找素数对
- hdu 1262寻找素数对
- HDU 1262 寻找素数对
- 数论--HDU1262 寻找素数对【素数】
- hdu1262-寻找素数对
- hdu 1262寻找素数对
- HDU 1262-寻找素数对
- hdu 1262 寻找素数
- HDU 1262 寻找素数对 模拟题
- hdu-oj 1262 寻找素数对
- HDU 1262 寻找素数对(素数)
- HDU 1262 寻找素数对
- hdu 1262 寻找素数对 筛法
- hdu-1262-寻找素数对
- hdu 1262 寻找素数对 数论 打表。
- hdu-1262-寻找素数对
- hdu 1262 寻找素数对
- HDU 1262 寻找素数对
- Hdu-1262寻找素数对
- hdu 1262 寻找素数对(素数的判断,快速筛选素数)