题目大意:给出一个小于10000的正偶数,求出它由两个不同的素数组成的方案数?
算法思想:
先用筛选法打一个10000的素数表,然后枚举2~n-1之间的素数,当i与n-i都为素数时为一种可行方案。
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN=10010;
bool Prime[MAXN]={0};
int flag[MAXN]={0};
int main(){
for(int i=2;i*i<MAXN;i++){
if(!Prime[i])
for(int j=2*i;j<MAXN;j+=i){
Prime[j]=true;
}
}
int t=500,n;
while(cin>>n&&n!=0&&t){
int count=0;
memset(flag,0,sizeof(flag));
for(int i=2;i<n/2;i++){
if(!Prime[i]&&!Prime[n-i]&&!flag[i]&&(i!=n-i)){
count++;
flag[n-i]=1;
}
}
cout<<count<<endl;
t--;
}
return 0;
}