输入二个正整数x0,y0(2<=x0<=100000,2<=y0<=100000),求出满足下列条件的P,Q的个数
条件: 1.P,Q是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
样例输入
3 60
样例输出
4
样例说明
此时的 P Q 分别为:
3 60
15 12
12 15
60 3
思路:这道题主要考察的是数学知识,可以看看这篇文章
其次的要求就是运行时间了
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a=scanner.nextInt();
int b=scanner.nextInt();
int count=0;
for (int i = a;i<=b; i++) {
//这里的循环我本来是让j<=b,结果超时了,就改成了j<=a,让最后次数*2
for (int j=a;j<=i;j++) {
if(Convention(i, j)==a&&fold(i,j)==b) {
count++;
}
}
}
System.out.println(count*2);
}
public static int Convention ( int a, int b){
int max, min;
max = (a > b) ? a : b;
min = (a < b) ? a : b;
if (max % min != 0) {
return Convention(min, max % min);
} else{
return min;
}
}
public static int fold(int a, int b) {
return a * b / Convention(a, b);
}
}