fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. #define promi() ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  5.  
  6. bool solve(int n, int p, int rqCnt) {
  7. ll pv = p;
  8.  
  9. while (n / pv && rqCnt > 0) {
  10. rqCnt -= n / pv;
  11. pv *= p;
  12. }
  13. return rqCnt <= 0;
  14. }
  15.  
  16. int main() {
  17. promi();
  18. int n, m, c, num;
  19. bool isDiv;
  20.  
  21. while (cin >> n >> m) {
  22. num = m;
  23. isDiv = true;
  24.  
  25. for (int i = 2; i * i <= m && isDiv; ++i) {
  26. c = 0;
  27.  
  28. while (m % i == 0) {
  29. m /= i;
  30. ++c;
  31. }
  32.  
  33. if (c > 0)
  34. isDiv = solve(n, i, c);
  35. }
  36.  
  37. if (m > 1 && isDiv) {
  38. isDiv = solve(n, m, 1);
  39. }
  40.  
  41. if (isDiv) {
  42. cout << num << " divides " << n << "!" << "\n";
  43. } else {
  44. cout << num << " does not divide " << n << "!" << "\n";
  45. }
  46. }
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 5316KB
stdin
6 9
6 27
20 10000
20 100000
1000 1009
stdout
9 divides 6!
27 does not divide 6!
10000 divides 20!
100000 does not divide 20!
1009 does not divide 1000!