题目描述
输入两个正整数 (x_0, y_0),求出满足下列条件的 (P, Q) 的个数:
-
(P,Q) 是正整数。
-
要求 (P, Q) 以 (x_0) 为最大公约数,以 (y_0) 为最小公倍数。
试求:满足条件的所有可能的 (P, Q) 的个数。
输入格式
一行两个正整数 (x_0, y_0)。
输出格式
一行一个数,表示求出满足条件的 (P, Q) 的个数。
输入样例
3 60
输出样例
4
样例说明
(P,Q) 有 (4) 种:
- (3, 60)。
- (15, 12)。
- (12, 15)。
- (60, 3)。
代码
var
x,y,i,s:longint;
n:int64;
function gcd(x,y:longint):longint;
begin
if y=0 then exit(x);
exit(gcd(y,x mod y));
end;
begin
readln(x,y);
n:=x*y;
for i:=1 to trunc(sqrt(n)) do if (n mod i=0) and (gcd(i,n div i)=x) then inc(s,2);
if x=y then dec(s);
writeln(s);
end.