#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long m, n;
long long ans;
long long mu(long long n) {
  long long cnt = 0, v = n;
  if (n == 1) return 1;
  for (long long i = 2; i * i <= n; ++i)
    if (v % i == 0) {
      ++cnt;
      v /= i;
      if (v % i == 0) return 0;
    }
  if (v > 1) ++cnt;
  return cnt & 1 ? -1 : 1;
}
long long power(long long a, long long k) {
  long long s = 1;
  for (; k; k >>= 1, a = a * a % mod)
    if (k & 1) s = s * a % mod;
  return s;
}
long long get(long long n) {
  long long ans = 0;
  for (long long i = 1; i * i <= n; ++i)
    if (n % i == 0) {
      ans = (ans + power(2, i - 1) * mu(n / i) % mod + mod) % mod;
      if (i * i ^ n)
        ans = (ans + power(2, n / i - 1) * mu(i) % mod + mod) % mod;
    }
  return ans;
}
inline void into() { scanf("%lld%lld", &m, &n); }
inline void work() {
  if (n % m) return;
  n /= m;
  ans = get(n);
}
inline void outo() { printf("%lld\n", ans); }
int main() {
  into();
  work();
  outo();
  return 0;
}
