fork download
  1.  
  2. #include <iostream>
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. int ssprime(int num){
  6. int size=((num-2)/2)+1,i;
  7. bool arr[size];
  8. memset(arr,false,sizeof(size));
  9. for(i=1;i<size;i++){
  10. for(int j=i;(i+j+(2*i*j))<=size;j++){
  11. arr[i+j+(2*i*j)]=true;
  12. }
  13. }
  14. int sum=0;
  15. if(num>=5){
  16. sum=2;
  17. for(i=1;i<size;i++){
  18. if(arr[i]==false && sum< num){
  19. sum+=(2*i)+1;
  20. }
  21. if(sum==num)
  22. break;
  23. }
  24. }
  25. else
  26. return 0;
  27. if (sum==num)
  28. return 1;
  29. return 0;
  30. }
  31. bool is_prime(int n)
  32. {
  33. int i,sq,count=0;
  34. if(n==1)
  35. return false;
  36. if(n==2)
  37. return true;
  38. if(n%2==0)
  39. return false;
  40. sq=sqrt(n);
  41. for(i=2;i<=sq;i++)
  42. {
  43. if(n%i==0)
  44. return false;
  45. }
  46. return true;
  47. }
  48. int main()
  49. {
  50. int num,count=0;
  51. cin>>num;
  52. for (int i=2;i<=num;i++){
  53. if(is_prime(i))
  54. count+=ssprime(i);
  55. }
  56. cout<<count;
  57. return 0;
  58. }
Success #stdin #stdout 0s 15240KB
stdin
20
stdout
2