c语言程序设计题目,如图所示(*σ´∀`)σヾ(´∀`。ヾ)
你题目的解答代码如下:
#include<stdio.h>
int gcd (int a, int b)
{
if (a < b)
return gcd (b, a);
else if (b == 0)
return a;
else
return gcd (b, a % b);
}
int lcm (int a, int b)
{
return a * b / gcd (a, b);
}
int main ()
{
int a,b;
scanf("%d", &a);
scanf("%d", &b);
if (a<0 || b<0)
printf("Input Error");
else
printf("%d %d\n",gcd(a, b),lcm(a, b));
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
非递归的辗转相除法求公约数:
#include<stdio.h>
int gcd(int m,int n)
{
int t;
while (n){
t = m % n;
m = n;
n = t;
}
return m;
}
int lcm (int m, int n)
{
return m * n / gcd (m, n);
}
int main ()
{
int a,b;
scanf("%d", &a);
scanf("%d", &b);
if (a<0 || b<0)
printf("Input Error");
else
printf("%d %d\n",gcd(a, b),lcm(a, b));
return 0;
}
#include<stdio.h>
int gcd(int m,int n)
{
int t;
while (n){
t = m % n; //辗转相处法求,最大公约数,直接记住公式
m = n;
n = t;
}
return m;
}
int lcm (int m, int n)
{
return m * n / gcd (m, n);
}
int main ()
{
int a,b;
scanf("%d", &a);
scanf("%d", &b);
if (a<0 || b<0)
printf("Input Error");
else
printf("%d %d\n",gcd(a, b),lcm(a, b));
return 0;
}
辗转相除法 求最大公约数
最小公倍数就是两数字相乘再除以最大公约数
关注我,我有许多这类题目的答案,主页资源下搜索