题目大意:
给定x和y,数数p和q使得:
1)p和q都是正整数
2) GCD(p, q) = x
3) LCM(p, q) = y
解题思路:
遍历枚举就好了
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int x,y;
int GCD(int a,int b)
{
int key,n=a,m=b;
while(m!=0)
{
key=n%m;
n=m;
m=key;
}
return n;
}
int LCM(int a,int b)
{
return a/GCD(a,b)*b;
}
int is_true(int a,int b)
{
if(GCD(a,b)!=x)
return 0;
if(LCM(a,b)!=y)
return 0;
return 1;
}
int main()
{
int i;
int count;
int h,f;
int c;
while(scanf("%d%d",&x,&y)!=EOF)
{
count=0;
c=1;
for(i=x;i<=y;i=x*c)
{
if((i%x==0)&&(y%i==0))
{
h=i;f=y/i*x;
if(is_true(h,f))
{
count++;
}
}
c++;
}
printf("%d\n",count);
}
return 0;
}
本文介绍了一个计算问题的解决方案,该问题要求找到所有符合条件的正整数对 (p, q),使得 p 和 q 的最大公约数为 x,最小公倍数为 y。文章提供了详细的解题思路及 C 语言实现代码。
6336

被折叠的 条评论
为什么被折叠?



