首页 > 代码库 > (洛谷1029 最大公约数和最小公倍数问题)

(洛谷1029 最大公约数和最小公倍数问题)

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数

条件:

1.P,Q是正整数

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

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

输入格式:

二个正整数x0,y0

输出格式:

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

输入样例#1:
3 60
输出样例#1:
4
枚举所有的b,看是否满足要求即可~(因为数据的范围比较的小)
#include<bits/stdc++.h>using namespace std;int ans=0;int a,b;int gcd(int a,int b){   if(a<b) swap(a,b);   if(a%b==0) return b;   else  return gcd(b,a%b);}int main(){   int n,m;   cin>>n>>m;   for(b=n;b<=m;b++)   {      double a=n*m/b;      if(int(a)==a)      {	     int s=gcd(b,int (a));	     if(s==n&&a/s*b==m)	       ans++;	  }   }   cout<<ans<<endl;   return 0;}

 


(洛谷1029 最大公约数和最小公倍数问题)