fork(4) download
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <vector>
  5. #define MAX 10000000
  6. using namespace std;
  7.  
  8.  
  9. long arr[10000007];
  10. long arr2[10000007];
  11. void init ()
  12. {
  13. for (long i=1; i<=MAX; i++)
  14. {
  15. arr[i]=1;
  16. arr2[i]=0;
  17. }
  18. arr[1]=0;
  19. }
  20.  
  21. void sangNT ()
  22. {
  23. for (long i=2; i<=sqrt(MAX); i++)
  24. {
  25. if (arr[i]==1)
  26. {
  27. for (long j=2; j<=MAX/i; j++)
  28. {
  29. arr[j*i]=0;
  30. }
  31. }
  32. }
  33. }
  34.  
  35. int main ()
  36. {
  37. init ();
  38. sangNT ();
  39. vector <long> v;
  40. for (long i=1; i<=MAX; i++)
  41. {
  42. if (arr[i]==1) v.push_back(i);
  43. }
  44. for (long i=0; i<v.size(); i++)
  45. {
  46. for (long j=1; j<=MAX/v[i]; j++)
  47. {
  48. arr2[v[i]*j]++;
  49. }
  50. }
  51. int t;
  52. cin>>t;
  53. for (int k=1; k<=t; k++)
  54. {
  55. long A, B, K, count=0;
  56. cin>>A>>B>>K;
  57. for (long i=A; i<=B; i++)
  58. {
  59. if (arr2[i]==K) count++;
  60. }
  61. printf ("Case #%d: %ld\n", k, count);
  62. }
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0.84s 172288KB
stdin
5
5 15 2
2 10 1
24 42 3
1000000 1000000 1
1000000 1000000 2
stdout
Case #1: 5
Case #2: 7
Case #3: 2
Case #4: 0
Case #5: 1