Codeforces 1295D Same GCDs (欧拉定理)

Description:

You are given two integers a and m. Calculate the number of integers x x such that 0 x < m 0≤x<m and g c d ( a , m ) = g c d ( a + x , m ) . gcd(a,m)=gcd(a+x,m).

Note: g c d ( a , b ) gcd(a,b) is the greatest common divisor of a a and b b .

Input

The first line contains the single integer T ( 1 T 50 ) T (1≤T≤50) — the number of test cases.

Next T lines contain test cases — one per line. Each line contains two integers a a and m ( 1 a < m 1 0 10 ) m (1≤a<m≤10^{10}) .

Output

Print T T integers — one per test case. For each test case print the number of appropriate x s . x-s.

Example

input

3
4 9
5 10
42 9999999967

output

6
1
9999999966

Note

In the first test case appropriate x s x-s are [ 0 , 1 , 3 , 4 , 6 , 7 ] [0,1,3,4,6,7] .

In the second test case the only appropriate x x is 0 0 .

题意:

给出两个正整数 a a m m ,再给出 x x 的范围为 [ 0 , m ) [ 0 , m ) ,现在要求满足 g c d ( a , m ) = g c d ( a + x , m ) gcd ( a , m ) = gcd ( a + x , m ) x x 的个数。

首先提取 a a m m 的最大公约数 g g ,令 a = x g m = y g a=xg,m=yg

题意就可转化为需要使得 g c d ( x g , y g ) = g c d ( x g + z , y g ) = g gcd(xg,yg) = gcd(xg+z,yg) = g

显然可知 z z g g 的倍数,令 z = k g , k [ 0 , y ) z = kg,k ∈[0,y)

那么所有满足 g c d ( x + k , y ) = 1 gcd(x+k,y) = 1 k k 都可以,即求 [ x , x + y ) [x,x+y) 中与 y y 互素数的个数。

因为 g c d ( x , y ) = g c d ( y , y % x ) gcd(x,y) = gcd(y,y\%x) ,故当 x + k ( y , x + y ) x+k∈(y,x+y) 时, g c d ( x + k , y ) = g c d ( y , ( x + k ) % y ) gcd(x+k,y) = gcd(y,(x+k)\%y)

因为 x < y , k [ 0 , y ) x<y,k ∈[0,y) ,所以 g c d ( x + k , y ) = g c d ( y , ( x + k ) y ) = 1 gcd(x+k,y)=gcd(y,(x+k)-y) =1

x + k y ( 0 , x ) x+k-y∈(0,x)

所以 ( y , x + y ) (y,x+y) 中与 y y 互素数的个数与 ( 0 , x ) (0,x) 中与与 y y 互素数的个数相等。

所以答案就是 [ 1 , y ] [1,y] 中与 y y 互素数的个数。

发布了611 篇原创文章 · 获赞 390 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_43627087/article/details/104114443