
import java.io.*;
import java.util.*;
public class Main {
static long Tra(long x,long y)
{
if(y==0) {return x;}
return Tra(y,x%y);
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int count = 5;
while(count-- >0){
int x0 = sc.nextInt();
int y0 = sc.nextInt();
long ans = 0;
for(int i = 1;i < Math.sqrt(x0*y0);i++){
if((x0*y0) % i == 0 && Tra(i,(x0*y0) / i) == x0){
ans++;
}
}
System.out.println(ans * 2);
}
}
}
首先,学到的是这一个dfs(好像是dfs),先说一下这一个函数方法,在主函数中,把i和sum除i的结果放进来,那么就进行递归。递归的出口是y==0.如果不是呢就继续进行递归,会发现,x、y的位置会互换。比如(1,180)第一次循环,变成(180,1),这样的话继续循环就变成了(1,0),结束递归,但是不符合条件,所以ans不变。再例如到(12,15)的时候,变成(15,12),(12,3),(3,3),最后是(3,0)结束递归。那么这样就得到3,符合条件,ans自加。不用全部算出来,只需要把ans*2即可得出全部结果。