Maruf_Hasan

fac 10139

Nov 16th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<bits/stdc++.h>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. #define M 100010
  7. bool mark[M];
  8. vector<long long>prime;
  9. vector<long long>lst;
  10. long long lstsize;
  11. long long lstsize1;
  12. vector<long long>lst1;
  13.  
  14. void sieve()
  15. {
  16. long long i,j;
  17. prime.push_back(2);
  18. for(i=3;i*i<=M;i+=2)
  19. {
  20. if(mark[i]==false)
  21. {
  22. for(j=i*i;j<=M;j+=2*i)
  23. mark[j]=true;
  24. }
  25. }
  26. for(i=3;i<=M;i+=2)
  27. {
  28. if(mark[i]==false)
  29. prime.push_back(i);
  30. }
  31.  
  32. }
  33.  
  34. void primefac(long long n)
  35. {
  36. long long i,j;
  37. for(i=0;prime[i]*prime[i]<=n;i++)
  38. {
  39. if(n%prime[i]==0)
  40. {
  41. while(n%prime[i]==0)
  42. {
  43. n/=prime[i];
  44. lst.push_back(prime[i]);
  45. lstsize++;
  46. }
  47. }
  48. }
  49. if(n>1){
  50. lst.push_back(n);
  51. lstsize++;
  52. }
  53.  
  54. }
  55. void primefac1(long long m)
  56. {
  57. long long i,j;
  58. for(i=0;prime[i]*prime[i]<=m;i++)
  59. {
  60. if(m%prime[i]==0)
  61. {
  62. while(m%prime[i]==0)
  63. {
  64. m/=prime[i];
  65. lst1.push_back(prime[i]);
  66. lstsize1++;
  67. }
  68. }
  69.  
  70. }
  71. if(m>1){
  72. lst1.push_back(m);
  73. lstsize1++;
  74. }
  75.  
  76. }
  77. bool issubset()
  78. {
  79. //std::sort(lst.begin(),lst.end());
  80. //std::sort(lst1.begin(),lst1.end());
  81. return std::includes(lst.begin(),lst.end(),lst1.begin(),lst1.end());
  82. }
  83.  
  84.  
  85. int main()
  86. {
  87.  
  88. sieve();
  89. long long n,i,fac=0,m;
  90. while(scanf("%lld %lld",&n,&m)==2)
  91. {
  92.  
  93. if(n>=m)
  94. {
  95. printf("%lld divides %lld!\n",m,n);
  96. }
  97. else{
  98. lstsize=0;
  99. lstsize1=0;
  100. for(i=n;i>1;i--)
  101. {
  102. primefac(i);
  103. }
  104.  
  105. primefac1(m);
  106. long long count=0;
  107.  
  108. long long k=0;
  109.  
  110. i=0;
  111. long long j=0;
  112. //sort(lst1.begin(),lst1.end());
  113. //sort(lst.begin(),lst.end());
  114. bool ans;
  115. ans=issubset();
  116. if(ans==true)
  117. {
  118. printf("%lld divides %lld!\n",m,n);
  119. }
  120. else
  121. printf("%lld does not divide %lld!\n",m,n);
  122.  
  123. }
  124. lst.clear();
  125. lst1.clear();
  126. }
  127. return 0;
  128.  
  129. }
Advertisement
Add Comment
Please, Sign In to add comment