最大公约数和最小公倍数问题

题目描述

输入 2 个正整数 x,y,求出满足下列条件的 P,Q 的个数

条件:

  1. P,Q 是正整数

  2. 要求P,Q 以 x 为最大公约数,以 y 为最小公倍数.

试求:满足条件的所有可能的 2个正整数的个数.

输入输出格式

输入格式:

 2 个正整数 x,y

输出格式:

1 个数,表示求出满足条件的 P,Q 的个数

只是注意一点,两个数的最大公约数和最小公倍数的乘积,和原来两数的乘积相同。

可以据此解题。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int m,n;
 4 int ans;
 5 int gcd(int x,int y){
 6     if(y==0)return x;
 7     return gcd(y,x%y);
 8 }
 9 int main(){
10     cin>>n>>m;
11     for(int i=1;i<=sqrt(m*n);i++){
12         if((m*n)%i==n&&gcd(i,(n*m)/i)==n) ans++;
13     }
14     cout<<ans*2;
15 }

原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/9368922.html