#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long power(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) {
      res *= x;
      res %= MOD;
    }
    x *= x;
    x %= MOD;
    y /= 2ll;
  }
  return res;
}
vector<long long> v;
int main() {
  long long x, y;
  scanf("%lld %lld", &x, &y);
  if (y % x) {
    puts("0");
    return 0;
  }
  y /= x;
  long long ans = 0;
  long long flag = 2;
  long long yy = y;
  while (flag * flag <= yy) {
    if (yy % flag == 0) {
      while (yy % flag == 0) {
        yy /= flag;
      }
      v.push_back(flag);
    } else {
      flag++;
    }
  }
  if (yy != 1) v.push_back(yy);
  for (int i = 0; i < 1 << v.size(); i++) {
    long long p = 1;
    int cnt = 0;
    for (int j = 0; j < v.size(); j++) {
      if ((1 << j) & i) {
        p *= v[j];
        cnt++;
      }
    }
    ans = ans + MOD + (cnt & 1 ? -1 : 1) * power(2, (y / p) - 1);
    ans %= MOD;
  }
  printf("%lld", ans);
}
