做法:
1.Gcd(x,y,z)=G,Lcm(x,y,z)=L w=L/G;
2.对w进行质因子分解 w=p1^r1*p2^r2....pn^rn. 例如对于p1 ,x,y,z中应该至少有一个p1^r1和p1,利用排列组合![](https://img-blog.csdnimg.cn/20200212194631807.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDM0MTcx,size_16,color_FFFFFF,t_70)
所以 sum=6*r1*6*r2........6*rn.
Given two positive integers G and L, could you tell me how many solutions of (x, y, z) there are, satisfying that gcd(x, y, z) = G and lcm(x, y, z) = L?
Note, gcd(x, y, z) means the greatest common divisor of x, y and z, while lcm(x, y, z) means the least common multiple of x, y and z.
Note 2, (1, 2, 3) and (1, 3, 2) are two different solutions.
Input
First line comes an integer T (T <= 12), telling the number of test cases.
The next T lines, each contains two positive 32-bit signed integers, G and L.
It’s guaranteed that each answer will fit in a 32-bit signed integer.
Output
For each test case, print one line with the number of solutions satisfying the conditions above.
Sample Input
2 6 72 7 33
Sample Output
72 0
//package p0208;
import java.util.*;
public class Main {
public static void main(String[] args) {
int G,L;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
while(n--!=0)
{
G=sc.nextInt();
L=sc.nextInt();
int sum=1;
if(L%G==0)
{
int w=L/G;
for(int i=2;i*i<=w;i++)
{
if(w%i==0)
{
int t=0;
while(w%i==0)
{
w=w/i;
t++;
}
sum=sum*6*t;
}
}
if(w>1) sum=sum*6;
System.out.println(sum);
}
else
{
System.out.println("0");
}
}
}
}