a53

prim007

a53
Jan 8th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <bitset>
  3. #define N 20001
  4. using namespace std;
  5. bitset <N> prim;
  6.  
  7. void Ciur() /// Ciurul lui Eratostene
  8. {
  9. prim[0]=prim[1]=1;
  10. for(int i=2;i*i<N;++i)
  11. if(prim[i]==0)
  12. for(int j=2;i*j<N;++j)
  13. prim[i*j]=1;
  14. }
  15.  
  16. int F[10001];
  17. long long sume_prim()
  18. {
  19. long long sol=0;
  20. for(int i=0;i<=10000;i+=2) /// i par
  21. for(int j=1;j<=9999;j+=2) /// si j impar
  22. if(!prim[i+j]) /// pentru ca doar asa suma poate fi nr prim (cu mici exceptii)
  23. sol+=F[i]*F[j];
  24. if(F[1]>1)
  25. sol+=F[1]*(F[1]-1LL)/2LL; /// Luam in calcul si 1+1
  26. sol+=F[0]*F[2]; /// Luam in calcul si 0+2
  27. return sol;
  28. }
  29.  
  30. int main()
  31. {
  32. Ciur();
  33. int n,x;
  34. cin>>n;
  35. for(int i=1;i<=n;++i)
  36. cin>>x,++F[x];
  37. cout<<sume_prim()<<'\n';
  38. return 0;
  39. }
Add Comment
Please, Sign In to add comment