素数筛选-hdu1262
题目描述:
代码实现:
#include<stdio.h> using namespace std; int prime[10000]; void sieve(int n) { for(int i=0;i<10000;i++) prime[i]=1; prime[1]=0; for(int i=2;i<5000;i++)////////////记得改i的范围 { if(prime[i]==1) { for(int j=i*i;j<=10000;j+=i) { prime[j]=0; } } } } int main() { int m; while(~scanf("%d",&m)) { sieve(m); for(int i=m/2;i>=3;i--)//为了找出最接近的两个素数,所以i从m/2开始遍历 { if(prime[i]==1&&prime[m-i]==1) { printf("%d %d\n",i,m-i); break; } } } return 0; }