#include <bits/stdc++.h>
using namespace std;
const long long md = 1e9 + 7;
long long fe(long long e) {
  if (e == 0) return 1;
  long long ans = fe(e / 2);
  ans = (ans * ans) % md;
  if (e % 2) ans *= 2;
  return (ans % md);
}
int main() {
  long long x, y;
  cin >> x >> y;
  if (y % x) {
    cout << 0 << endl;
    return 0;
  }
  long long k = y / x;
  vector<int> pp;
  long long kk = k;
  for (long long p = 2; p < 1e5; p++) {
    if (kk % p == 0) {
      pp.push_back(p);
      while (kk % p == 0) kk /= p;
    }
  }
  if (kk > 1) pp.push_back(kk);
  long long ans = fe(k - 1);
  int mx = 1 << (int)pp.size();
  for (int i = 1; i < mx; i++) {
    long long p = 1, sgn = 1;
    for (int j = 0; 1 << j <= i; j++) {
      if (1 << j & i) {
        p *= pp[j];
        sgn *= -1;
      }
    }
    ans += sgn * fe(k / p - 1);
    ans %= md;
    while (ans < 0) ans += md;
  }
  cout << ans << endl;
  return 0;
}
