C++语言编写两个函数 gcd 和 lcm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++语言编写两个函数 gcd 和 lcm相关的知识,希望对你有一定的参考价值。

必须使用 C++语言
编写两个函数 gcd 和 lcm,分别求两个整数的最大公约数和最小公倍数, 然后在主函数中调用以上两个函数求24和36, 48 和24,5和7的最大公约数和最小公倍数

#include<cstdio>

using namespace std;

int gcd(int a,int b)    //辗转相除法
if(a%b==0) return b;
else return gcd(b,a%b);


int lcm(int a,int b)
return a*b/gcd(a,b);    //最小公倍数乘最大公约数等于它们的乘积


int main()
int a,b,t;
scanf("%d%d",&a,&b);
if(a<b)   t=a;a=b;b=t;
t=gcd(a,b);
printf("%d %d",t,a*b/t);
return 0;

参考技术A #include<iostream>
using namespace std;
int gcd(int,int);
int lcm(int,int);
void main()

// gcd(24,36);
lcm(24,36);
lcm(48,24);
lcm(5,7);


int gcd(int x,int y)

int xx=x;
int yy=y;
int m;
//int n;
if(x<y)

int temp;
temp=x;
x=y;
y=temp;

while(1)

m=x%y;
if(m==0)

cout<<xx<<"和"<<yy<<"的最大公约数为:"<<y<<endl;
return y;

else

x=y;
y=m;




int lcm(int x,int y)

int m,n;
m=gcd(x,y);
n=x*y/m;
cout<<x<<"和"<<y<<"的最小公倍数为:"<<n<<endl;
return n;

Uva 11388 GCD LCM

题意:给定两个整数G和L,找出两个整数a和b,使得二者的最大公约数为G,最小公倍数为L,如果有多组解,输出a<=b且a最小的解,若无解输出-1

根据L=(a*b)/G,由于G是a和b的约数,因此a和b可以写成G*x,G*y,则等式变为:L/G=x*y。若L%G!=0,则无解,否则取x为1即可。

 

 1 #include <cstdio>
 2 
 3 int main ()
 4 {
 5     int T;
 6     scanf("%d",&T);
 7     while (T--)
 8     {
 9         int G,L;
10         scanf("%d%d",&G,&L);
11         if (L%G==0)
12             printf("%d %d\n",G,L);
13         else
14             printf("-1\n");
15     }
16     return 0;
17 }

 

以上是关于C++语言编写两个函数 gcd 和 lcm的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程

逻辑和函数式编程在gcd实现上的区别

求一个用c语言编写的,编写函数计算两个整数的所有公约数的编程

C语言 DEV c++ 程式实作题

C语言有引用传递吗

描述编写求最大公约数的函数gcd和最小公倍数的函数lcm。 可以使用函数的嵌套调用,使用lcm的调用gcd函数