给定1 <= a < b < 1e15
, 找有多少个x
满足: gcd(a, b) = gcd(a + x, b) {其中, x可以是[0, b-1]范围内
比如a = 4, b = 9
1 = gcd(a, b) = gcd( a + [0/1/3/4/6/7], b)
, x可以取6个值, 答案是6
注意, euler找[1, c)
中 与c互质的个数, 等价于 找: [0, c)
范围内的!
因为, 0和任何数 都不互质. 因为0就没有约数, 0和任何数 都无法求gcd
LL _g = GCD(a, b);
cout << EULER_FUNC_GET( b / _g);