func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   long long a[2000], dp[2000];   long long qmod(long long y) {     long long res = 1, two = (long long)2;     for (; y; y >>= 1) {       if (y & 1) res = res * two % mod;       two = two * two % mod;     }     return res;   }   int main() {     long long x, y;     int cnt = 0;     scanf( %lld%lld , &x, &y);     if (y % x) return 0 * puts( 0 );     for (long long i = 1; i <= sqrt(y); ++i) {       if (y % i == 0) {         if (i % x == 0) a[++cnt] = i;         if (i * i != y && y / i % x == 0) a[++cnt] = y / i;       }     }     sort(a + 1, a + 1 + cnt);     for (int i = cnt; i > 0; --i) {       dp[i] = qmod(y / a[i] - 1);       for (int j = i + 1; j <= cnt; ++j)         if (a[j] % a[i] == 0) dp[i] = ((dp[i] - dp[j]) % mod + mod) % mod;     }     printf( %lld n , dp[1]);     return 0;   }   