算法刷题记录(已知最大公约和最小公倍数,求可能的解的组数)
之第1012题
题目描述:
输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数
条件:
1.P,Q是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
题解:
#include <iostream>
using namespace std;
int gcd(int a,int b){ //计算两个数的最大公约数
return (b==0)?a:gcd(b,a%b);
}
int main()
{
int a,b;
int count=0;
cin>>a>>b;
if(b%a==0){ //判断输入的数是否为整除关系
int c=b/a; //如果不是整除关系则一定没有结果
for(int x=1;x<=c;x++){ //遍历一直到c
if(c%x==0) { //取c的因数
int m=x*a; //计算第一因数 m
int n=c/x*a;