fork download
  1. #include <stdio.h>
  2. //unsigned long long prime[10000000];
  3. int main()
  4. {
  5. long int T,flag;
  6. unsigned long long int L,R,X,D,p,dn,total_div,count_div,k,i,j;
  7. scanf("%ld",&T);
  8. while(T--)
  9. {
  10. scanf("%lld%lld",&L,&R);
  11. count_div = 0;
  12. /*
  13.   prime[0]=2;
  14.   prime[1]=3;
  15.   prime[2]=5;
  16.   k=3;
  17.   for(i=6;i<=R;i++)
  18.   {
  19.   flag=0;
  20.   for(j=2;j<=sqrt(i);j++)
  21.   {
  22.   if(i%j == 0)
  23.   flag = 1;
  24.   }
  25.   if(flag == 0)
  26.   prime[k++] = i;
  27.   }
  28.   */
  29. for(X=L;X<=R;X++)
  30. {
  31. D=X;
  32. //p=0;
  33. p=2;
  34. total_div = 1;
  35. while(D>1)
  36. {
  37. dn=1;
  38. while(D%p == 0) //D%prime[p]
  39. {
  40. dn +=1;
  41. //D=D/prime[p];
  42. D=D/p;
  43. }
  44. total_div *= dn;
  45.  
  46. if(p % 2 == 0)
  47. p+=1;
  48. else
  49. p+=2;
  50. if(p > (X/2))
  51. {
  52. if(total_div == 1)
  53. total_div +=1;
  54. break;
  55. }
  56. }
  57. if(X != 1 && total_div == 1)
  58. total_div +=1;
  59. if(total_div%2 != 0)
  60. count_div++;
  61. }
  62. printf("%lld\n",count_div);
  63. }
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0s 2056KB
stdin
2
1 3
6 10
stdout
1
1