Maruf_Hasan

Divisors last

Oct 18th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 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<long long>prime;
  9.  
  10. void sieve()
  11. {
  12. long long 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.  
  30. long long divisors(long long x)
  31. {
  32. long long div=1,pre=x;
  33. for(long long j=0;prime[j]<=pre;j++)
  34. {
  35. if(x%prime[j]==0)
  36. {
  37. long long count=1;
  38. while(x%prime[j]==0)
  39. {
  40. x/=prime[j];
  41. count++;
  42. }
  43. div*=count;
  44. }
  45. }
  46.  
  47. return div;
  48. }
  49.  
  50. int main()
  51. {
  52. sieve();
  53. long long n,i,k,m;
  54. scanf("%lld",&n);
  55. while(n--)
  56. {
  57. vector<long long>v;
  58. long long lower,upper,num=0;
  59. scanf("%lld %lld",&lower,&upper);
  60. for(i=lower;i<=upper;i++)
  61. {
  62. k=divisors(i);
  63. if(k>num)
  64. {
  65. num=i;
  66. }
  67. }
  68.  
  69. cout<<num<<endl;
  70. }
  71.  
  72. return 0;
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment