Friday, 28 July 2017

Lightoj 1259 - Goldbach`s Conjecture

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define N 10000000
  4. bool prime[N];
  5. vector<int> v;
  6. void sieve(){
  7.     memset(prime, truesizeof(prime));
  8.     for(int i = 2; i <=sqrt(N); i++){
  9.         for(int j = i*i; j<= N; j+= i){
  10.             prime[j] = false;
  11.         }
  12.     }
  13.     for(int i = 2; i <=N; i++){
  14.         if(prime[i]) v.push_back(i);
  15.     }
  16.     //for(int i = 0; i <v.size(); i++) cout<<v[i]<<" ";
  17. }
  18.  
  19. int main()
  20. {
  21.     int t,cases=0;
  22.     sieve();
  23.     scanf("%d",&t);
  24.  
  25.     while(t--){
  26.             int n;
  27.             scanf("%d"&n);
  28.             /*
  29.             if(a*a == b*b + c*c || b*b == a*a + c*c || c*c== a*a + b*b) printf("Case %d: yes\n",++cases);
  30.             else printf("Case %d: no\n",++cases);
  31.             */
  32.             int c = 0;
  33.             for(int i = 0; v[i]<= n-v[i]; i++){
  34.                 if(prime[n-v[i]]) c++;
  35.             }
  36.             printf("Case %d: %d\n",++cases, c);
  37.     }
  38.     return 0;
  39. }

No comments:

Post a Comment

Most Featured Post

Lightoj 1159 - Batman

http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...