#include <iostream> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h> using namespace std; #define LL long long #define M 100000 #define inf 0x3fffffff
int p[9600], vis[M], k;
int cal (int f, int x) //计算f!中有多少个x因子 { int res = 0; while (f) { f /= x; res += f; } return res; }
bool judge(int n, int m) { int i; for (i = 0; i < k && (LL)p[i]*p[i] <= m; i++) { if (m % p[i] == 0) { int tp = 0; do m /= p[i], ++tp; while (m % p[i] == 0); if (cal(n, p[i]) < tp) return false; } } if (m > 1 && n < m) return false; return true; }
int main() { int i, j, n, m; k = 0; for (i = 2; i < M; i++) { if (!vis[i]) { p[k++] = i; for (j = i+i; j < M; j+=i) vis[j] = 1; } } while (cin >> n >> m) { if (judge(n, m)) printf ("%d divides %d!\n", m, n); else printf ("%d does not divide %d!\n", m, n); } return 0; }