hdoj-5104Primes Problem(素数打表)

来源:互联网 发布:c语言常用函数 编辑:程序博客网 时间:2024/06/03 12:50

Primes Problem

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3614    Accepted Submission(s): 1629


Problem Description
Given a number n, please count how many tuple(p1, p2, p3) satisfied that p1<=p2<=p3, p1,p2,p3 are primes and p1 + p2 + p3 = n.
 

Input
Multiple test cases(less than 100), for each test case, the only line indicates the positive integer n(n10000).
 

Output
For each test case, print the number of ways.
 

Sample Input
39
 

Sample Output
02
 

题目链接

这里要注意素数打表和比较的方式,很容易超时。

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int num[10005];void prime(){for(int i=2;i<10005;i++){if(num[i]==0){for(int j=i+i;j<10005;j+=i)num[j]=1;}}}int main(){int n;memset(num,0,sizeof(num));num[1]=1;prime();while(scanf("%d",&n)!=EOF){int ans=0;for(int i=2;i<=n;i++){for(int j=i;j<=(n-i)/2;j++){if(!num[j]&&!num[i]&&!num[n-i-j])ans++;}}printf("%d\n",ans);}return 0;}


原创粉丝点击