fork(4) download
  1.  
  2.  
  3. #include<iostream>
  4. using namespace std;
  5. int expand(int);
  6. int main()
  7. {
  8. int pr[50],l,f,h,z,count=0;
  9. std::fill_n(pr,50,1);
  10. for (int p=2; p*p<=50; p++)
  11. {
  12. if (pr[p] ==1)
  13. {
  14. for (int i=p*2; i<=50; i += p)
  15. pr[i] = 0;
  16. }
  17. }
  18. cin>>l>>h;
  19. while (l<h)
  20. {
  21. f=0;
  22. for(int i = 2; i <= l/2; ++i)
  23. {
  24. if(l% i == 0)
  25. {
  26. f = 1;
  27. break;
  28. }
  29. }
  30.  
  31. if (f == 0){
  32. if(l!=1){
  33. z=expand(l);
  34. if(pr[z]==1)
  35. count++;
  36. z=0;}
  37. }
  38.  
  39. ++l;
  40. }
  41.  
  42. cout<<count;
  43. }
  44. int expand(int value)
  45. {
  46. int count=0;
  47. const char * const ones[20] = {"zero", "one", "two", "three","four","five","six","seven",
  48. "eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
  49. "eighteen","nineteen"};
  50. const char * const tens[10] = {"", "ten", "twenty", "thirty","forty","fifty","sixty","seventy",
  51. "eighty","ninety"};
  52. int a[20]={4,3,3,5,4,4,3,5,5,4,3,6,6,8,8,7,7,9,8,8};
  53. int b[10]={0,3,6,6,5,5,5,7,6,6};
  54. if(value>=1000)
  55. {
  56. count+=expand(value/1000);
  57. count+=8;
  58. if(value % 1000)
  59. {
  60. if(value % 1000 < 100)
  61. {
  62. count+=3;
  63. }
  64. count+=expand(value % 1000);
  65. }
  66. }
  67. else if(value >= 100)
  68. {
  69. count+=expand(value / 100);
  70. count+=7;
  71. if(value % 100)
  72. {
  73. count+=3;
  74. count+=expand (value % 100);
  75. }
  76. }
  77. else if(value >= 20)
  78. {
  79. count+=b[value/10];
  80. if(value % 10)
  81. {;
  82. count+=expand(value % 10);
  83. }
  84. }
  85. else
  86. {
  87. count+=a[value];
  88. }
  89. return count;
  90. }
Success #stdin #stdout 0s 16064KB
stdin
1 40
stdout
5