• Source
    1. #include<bits/stdc++.h>
    2. #define MAX 1000005
    3.  
    4. using namespace std;
    5.  
    6. bool semi_primes[MAX],check[MAX];
    7.  
    8. int res[MAX];
    9.  
    10. void solve()
    11. {
    12. int i,j;
    13.  
    14. for(i=5; i<=1000; i+=4)
    15. {
    16. for(j=i; i*j<=MAX; j+=4)
    17. {
    18. check[i*j] = true;
    19. }
    20. }
    21.  
    22. for(i=5; i<=1000; i+=4)
    23. {
    24. if(check[i])
    25. {
    26. continue;
    27. }
    28.  
    29. for(j=i; i*j<=MAX; j+=4)
    30. {
    31. if(check[j])
    32. {
    33. continue;
    34. }
    35.  
    36. semi_primes[i*j] = true;
    37. }
    38. }
    39.  
    40. for(i=25; i<=MAX; i++)
    41. {
    42. if(semi_primes[i])
    43. {
    44. res[i] = 1;
    45. }
    46.  
    47. res[i]+=res[i-1];
    48. }
    49. }
    50.  
    51. int main()
    52. {
    53. int n;
    54.  
    55. solve();
    56.  
    57. while(scanf("%d",&n)&&n)
    58. {
    59. printf("%d %d\n",n,res[n]);
    60. }
    61.  
    62. return 0;
    63. }