#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int x, y;
long long ans;
long long power(long long b, long long e) {
  long long ans = 1;
  while (e > 0) {
    if (e & 1) ans = (ans * b) % MOD;
    b = (b * b) % MOD;
    e >>= 1;
  }
  return ans;
}
long long get(int n) { return power(2, n - 1); }
void go(vector<int> pr, long long n, bool par = true) {
  if (pr.empty()) {
    ans += (2 * par - 1) * get(n);
    return;
  }
  int p = pr.back();
  pr.pop_back();
  go(pr, n, par);
  go(pr, n / p, !par);
}
int main() {
  cin >> x >> y;
  if (y % x) {
    cout << 0 << endl;
    return 0;
  }
  y /= x;
  int n = y;
  vector<int> pr;
  for (int i = 2; i <= y; i++) {
    if (y % i == 0) {
      do {
        y /= i;
      } while (y % i == 0);
      pr.push_back(i);
    }
  }
  go(pr, n);
  cout << (ans % MOD + MOD) % MOD << endl;
  return 0;
}
