HDU5104-Primes Problem

梦里梦外; 2022-06-03 04:40 332阅读 0赞

Primes Problem

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(n≤10000).

Output

For each test case, print the number of ways.

Sample Input

3

9

Sample Output

0

2

  1. #include <bits/stdc++.h>///Primes Problem
  2. using namespace std;
  3. #define N 10005
  4. int prime[N];
  5. int q[N];
  6. int main()
  7. {
  8. int i,j,k,n,l=0,sum;
  9. memset(q,0,sizeof(q));
  10. prime[0]=0;
  11. prime[1]=0;
  12. prime[2]=1;
  13. for(i=3;i<N;i++)//首先偶数一定不是素数,除了2
  14. {
  15. if(i%2)
  16. prime[i]=1;
  17. else
  18. prime[i]=0;
  19. }
  20. for(i=3;i<=sqrt(N);i++)
  21. {
  22. if(prime[i])
  23. for(j=i+i;j<N;j=j+i)//当i是素数的时候,i的所有的倍数必然是合数
  24. prime[j]=0;
  25. }
  26. for(k=0;k<10000;k++)
  27. {
  28. if(prime[k])
  29. q[l++]=k;
  30. }
  31. while(~scanf("%d",&n))
  32. {
  33. sum=0;
  34. for(int i=0;q[i]<n;i++)
  35. for(int j=i;q[j]<n-q[i];j++)
  36. {
  37. if(prime[n-q[i]-q[j]]&&n-q[i]-q[j]>=q[j])
  38. {
  39. sum++;
  40. }
  41. }
  42. printf("%d\n",sum);
  43. }
  44. return 0;
  45. }

发表评论

表情:
评论列表 (有 0 条评论,332人围观)

还没有评论,来说两句吧...

相关阅读