#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const int INF = 1000000000;
long long x, y;
vector<int> d;
long long result = 0;
long long mobius(int x);
vector<int> getDivisors(int x);
long long binPow(long long a, int power);
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> x >> y;
  if (!(y % x)) {
    y /= x;
    for (int i = 1; i * i <= y; i++) {
      if (!(y % i)) {
        d.push_back(i);
        if (i * i != y) d.push_back(y / i);
      }
    }
    for (int i = 0; i < d.size(); i++)
      result = (result + mobius(y / d[i]) * binPow(2, d[i] - 1) + mod) % mod;
  }
  cout << result << "\n";
  return 0;
}
long long mobius(int x) {
  vector<int> res = getDivisors(x);
  for (int i = 1; i < res.size(); i++) {
    if (res[i] == res[i - 1]) return 0;
  }
  if (res.size() & 1) return -1;
  return 1;
}
vector<int> getDivisors(int x) {
  vector<int> result;
  for (int i = 2; i * i <= x; i++) {
    while (!(x % i)) {
      result.push_back(i);
      x /= i;
    }
  }
  if (x > 1) result.push_back(x);
  return result;
}
long long binPow(long long a, int power) {
  if (power == 0) return 1;
  if (power == 1) return a;
  long long res = binPow(a, power >> 1);
  res = res * res % mod;
  if (power & 1) return res * a % mod;
  return res;
}
