• Source
    1. #include<bits/stdc++.h>
    2. #define pii pair<int,int>
    3. #define ff first
    4. #define ss second
    5.  
    6. using namespace std;
    7.  
    8. vector<int>prime;
    9.  
    10. bool check[47000];
    11.  
    12. vector<pii>factors;
    13.  
    14. long long n,m;
    15.  
    16. void sieve()
    17. {
    18. long long i,j;
    19.  
    20. prime.push_back(2);
    21.  
    22. for(i=3; i<47000; i+=2)
    23. {
    24. if(check[i])
    25. continue;
    26.  
    27. prime.push_back(i);
    28.  
    29. for(j=i*i; j<47000; j+=2*i)
    30. {
    31. check[j] = true;
    32. }
    33. }
    34. }
    35.  
    36. void solve()
    37. {
    38. int i,cnt;
    39.  
    40. long long store = m;
    41.  
    42. for(i=0; prime[i]*prime[i]<=store; i++)
    43. {
    44. if(store%prime[i]==0)
    45. {
    46. cnt = 0;
    47.  
    48. while(store%prime[i]==0)
    49. {
    50. cnt++;
    51.  
    52. store/=prime[i];
    53. }
    54.  
    55. factors.push_back(make_pair(prime[i],cnt));
    56. }
    57. }
    58.  
    59. if(store!=1)
    60. {
    61. factors.push_back(make_pair(store,1));
    62. }
    63. }
    64.  
    65.  
    66. int main()
    67. {
    68. sieve();
    69.  
    70. int i;
    71.  
    72. while(scanf("%lld%lld",&n,&m)==2)
    73. {
    74. solve();
    75.  
    76. int len = factors.size();
    77.  
    78. bool tag = true;
    79.  
    80. for(i=0; i<len; i++)
    81. {
    82. long long store = n;
    83.  
    84. int a = factors[i].ff,cnt=0;
    85.  
    86. int b = factors[i].ss;
    87.  
    88. while(store/a)
    89. {
    90. cnt+=store/a;
    91.  
    92. store/=a;
    93. }
    94.  
    95. if(b>cnt)
    96. {
    97. tag = false;
    98.  
    99. break;
    100. }
    101. }
    102.  
    103. if(tag)
    104. {
    105. printf("%lld divides %lld!\n",m,n);
    106. }
    107. else
    108. {
    109. printf("%lld does not divide %lld!\n",m,n);
    110. }
    111.  
    112. factors.clear();
    113. }
    114.  
    115. return 0;
    116. }