Maruf_Hasan

Divislors mylast

Oct 21st, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define M 1000000
  5.  
  6. bool mark[M];
  7.  
  8. vector<int>prime;
  9.  
  10. void sieve()
  11. {
  12. int i,j;
  13. prime.push_back(2);
  14. for(i=3;i*i<M;i+=2)
  15. {
  16. if(mark[i]==false)
  17. {
  18. for(j=i*i;j<M;j+=2*i)
  19. mark[j]=true;
  20. }
  21. }
  22. for(i=3;i<M;i+=2)
  23. {
  24. if(mark[i]==false)
  25. prime.push_back(i);
  26. }
  27.  
  28. }
  29. int divisor(int n)
  30. {
  31. int i,val,count,sum;
  32. sum=1;
  33. for(i=0;prime[i]*prime[i]<n;i++)
  34. {
  35. if(n%prime[i]==0)
  36. {
  37. count=0;
  38. while(n%prime[i]==0)
  39. {
  40. n/=prime[i];
  41. count++;
  42. }
  43. sum*=(count+1);
  44. }
  45. }
  46. if(n>1)
  47. sum*=2;
  48. return sum;
  49. }
  50.  
  51.  
  52.  
  53.  
  54. int main()
  55. {
  56. sieve();
  57. int n,i,m,l,h,k;
  58. scanf("%d",&n);
  59. while(n--)
  60. {
  61.  
  62. scanf("%d %d",&l,&h);
  63. int best=0,index=0;
  64. for(int i=l;i<=h;i++)
  65. {
  66.  
  67. k=divisor(i);
  68. if(k>best)
  69. {
  70. best=k;
  71. index=i;
  72. }
  73. }
  74. printf("Between %d and %d, %d has a maximum of %d divisors.\n",l,h,index,best);
  75. }
  76.  
  77. return 0;
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment