题目大意:给一个数N,求一个元组(p1,p2,p3),使得三个数都是素数且有序。
解题思路:直接先打素数表,因为数据范围是1e4,因此可以直接暴力求解,枚举前面两个数,然后判断第三个数是否满足条件即可,详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=5104
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN = 10000+100;
int isp[MAXN];
int n,cnt;
void init(){
memset(isp,0,sizeof(isp));
for(int i=2;i<sqrt(MAXN+0.5);++i)
for(int j=2;i*j<MAXN;++j)
isp[i*j]=1;
}
int main(){
init();
while(~scanf("%d",&n)){
cnt=0;
for(int i=2;i<=n;++i) if(!isp[i]){
for(int j=i;j<=(n-i)/2;++j)
if(!isp[j] && !isp[n-i-j]) ++cnt;
}
printf("%d\n",cnt);
}
return 0;
}