c++编写一个求两个整数最大公约数和最小公倍数的函数 用C++编写程序定义两函数求两整数的最大公约数和最小公倍数

作者&投稿:说泄 (若有异议请与网页底部的电邮联系)

编写该程序的整体思路:分别定义最大公约数函数和最小公倍数函数,然后再main函数里面调用它。C语言实现代码如下:

#include<stdio.h>

#include<math.h>

int fun_gy(int,int);  //声明最大公约数函数

int fun_gb(int,int);  //声明最小公倍数函数

main()

{

int a,b,gy,gb;

printf("输入两个整数:
");

scanf("%d%d",&a,&b);

gy=fun_gy(a,b);   //调用最大公约数函数

gb=fun_gb(a,b);  //调用最小公倍数函数

printf("最大公约数是:%d
最小公倍数是:%d
",gy,gb);

}

int fun_gy(int x,int y)

{

int z,i;

if(x>y)

z=sqrt(y);

else 

z=sqrt(x);

for(i=z;i>=1;i--)

{

if(x%i==0&&y%i==0)

break;

}

return i;

}

int fun_gb(int x,int y)

{

int z,i; 

z=x*y;

for(i=x;i<=z;i++)

{

if(i%x==0&&i%y==0)

break;

}

return i;

}

程序运行结果:

扩展资料:

这里涉及到了最大公约数和最小公倍数的计算方法:

我们知道两个整数的最小公倍数等于他们的乘积除以他们的最大公约数。所以关键还是最大公约数的计算。

辗转相除法(求最大公约数):

假设求a,b的最大公约数,则:

(1)a除以b取余得c,若c=0,则b即为两数的最大公约数,输出,结束。

(2)若c  != 0,则将b赋给a,c赋给b再返回上一步操作,继续执行。

例如,求30和98的最大公约数,过程如下:

90%30 = 8;

30%8 = 6;

8%6 = 2;

6%2 = 0;

所以最大公约数为2。



#include<stdio.h>
void main()
{int a,b,num1,num2,temp;
scanf("%d %d",&num1,&num2);
if(num1<num2){temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while(b!=0)
{temp=a%b;
a=b;
b=temp;}
printf("%d\n",a);
printf("%d\n",num1*num2/a);
}

C语言 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整~

#include<stdio.h>//0和任意的一个数的最大公约数就是那个数(最小公倍数就是0)
int yue(int x,int y)
{
int m,t;
if(y>x)
{
t=x;//将x与y的值交换
x=y;
y=t;
}
while(y!=0)
{
m=x%y;
x=y;
y=m;
}
return x;
}
int bei(int x,int y,int p)
{
return(x*y/p);
}
int main()
{
int yue(int,int);
int bei(int,int,int);
int p,q,a,b;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
q=yue(a,b);
p=bei(a,b,q);//最小公倍数=两数的乘积除以它们的最大公约数
printf("最大公约数是:%d
最小公倍数是:%d
",q,p);
}

扩展资料:#include<iostream>
using namespace std;
int i;
int max(int a,int b)
{
//cout<<"max";
int s;s=i=2;
//cout<<s<<endl;
if(a>b)
{
i=b;
}
else
i=a;
do{
if(a%i==0&&b%i==0)
{
//cout<<"do里面的s!"<<s<<endl;
//cout<<"do里面的i!"<<i<<endl;
s=i;
break;
}
i--;
}while(i<a&&i<b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
int min(int a,int b)
{
//cout<<"min";
int s;s=1;i=2;
do{
if(i%a==0&&i%b==0)
{
//cout<<"do里面的s!"<<s<<endl;
//cout<<"do里面的i!"<<i<<endl;
s=i;break;
}
i++;
}while(i<=a*b);
//cout<<"end的s!"<<s<<endl;
//cout<<"end的i!"<<i<<endl;
return s;
}
int main()
{
int x,y,m,n;
cin>>x>>y;
m=max(x,y);n=min(x,y);
cout<<m<<""<<n;
}

//#include "stdafx.h"//If the vc++6.0, with this line.#include using namespace std;int mygcd(int a,int b){int r;while(r=a%b)a=b,b=r;return b;}int mylcm(int a,int b){for(int t=a;a%b;a+=t);return a;}int main(int argc,char *argv[]){int x,y;cout > x >> y) || x<1 || y<1){cout << "Input error, exit...
";return 0;}cout << "The GCD is " << mygcd(x,y) << endl;cout << "The LCM is " << mylcm(x,y) << endl;return 0;}运行样例:

c语言编程 3、 编写程序求出两个正整数的最大公约数与最小公倍数。其...
答:=0) { t = b; b = a % b; a = t; } return a;}int rec_gcd(int a, int b) //采用递归算法求最大公约数{ return b==0 ? a : rec_gcd(b, a%b);}int lcm_fun(int a, int b, int gcd) //求两个数的最小公倍数{ int t = a * ...

如何用C语言实现求两个正整数的最大公约数?
答:让我们一起探索C语言中的数字奥秘:如何计算两个正整数的最大公约数。</ 首先,打开你的C语言编程环境,比如Visual C++6.0,准备编写一段奇妙的代码。在程序的初始阶段,敲击键盘,输入两个待求公约数的正整数a和b。</ 为了简化计算,我们需要找到这两个数中的较小值,将其存储在变量n中,这样...

编写函数实现,输入两个整数m和n,求最大公约数和最小公倍数,c语言_百 ...
答:include <stdio.h> int main(){ int m,n,c,d,t;printf("请输入两个数:\n");scanf("%d%d",&m,&n);if(m<n){ t=m;m=n;n=t;} d=m*n;c=m%n;while(c!=0){ m=n;n=c;c=m%n;} printf("最大公约数是:\n%d\n",n);printf("最小公倍数是:\n%d\n",d/n);} ...

c语言编程:输入两个正整数,求最大公约数和最小公倍数
答:printf("它们的最小公约数为:%d\n",p/n);return 0;} 方法二、//穷举法解两个数的最大公约数和最小公倍数 void exp(int num1,int num2){ int x,y,i;x=num1;y=num2;int max=0;//最大公约数 for(i=1;i<=num1;i++)if(num1%i==0&&num2%i==0)max=i;System.out.println(...

c语言怎么求两个整数的最大公约数?
答:4、如果a != b;则继续从一开始执行;5、也就是说循环的判断条件为a != b,直到a = b时,循环结束。代码如下:define _CRT_SECURE_NO_WARNINGS 1 include <stdio.h> int main(){ int a = 0;int b = 0;printf("输入两个数求最大公约数:");scanf("%d%d",&a,&b);while(a!=b)...

C语言编写 求两个整数的最大公约数和最小公倍数。用一个函数求最大公 ...
答:return 0; //不存在最小公约数,返回值小于1皆可 while(n%m){ r=n%m;n=m;m=r;} return m;} int Multiple(int n,int m){ int c=Convention(n,m);if(c>0)return n*m/c;return 0; //同公约数不存在最小公倍数 } void main(){ int n,m;printf("请输入两个整数(大于0...

最大公约数python代码简单给定两个正整数,求它们的最小公倍数。
答:print('a和b的最大公约数为:', gcd(a, b))print('a和b的最小公倍数为:', lcm(a, b))首先,在代码中通过`gcd`函数计算a和b的最大公约数,使用了辗转相除法的思想。其次,在`lcm`函数中,使用两个正整数的乘积除以它们的最大公约数得到最小公倍数。最后,通过测试将18和24输入到函数...

[C语言]编程:输入两个正整数,求其最大公约数和最小公倍数
答:include<stdio.h> int main(){ int m, n;int gcd, lcm;scanf("%d%d", &m, &n);gcd = m < n ? m : n;lcm = m > n ? m : n;do { if(m % gcd == 0 && n%gcd==0)break;gcd--;}while(1);do { if(lcm % m == 0 && lcm % n==0)break;lcm++;}while(1)...

编写两个函数,分别求两个整数的最大公约数和最小公倍数,并用主函数调用...
答:int n){ return m*n / gcd(m, n);}int main(){ int m,n; cin>>m>>n; cout << m<<"与"<<n<<"的最大公约数是" << gcd(m, n) << endl; cout << m<<"与"<<n<<"的最小公倍数是" << lcm(m, n) << endl; return 0;}结果为:...

编写一个函数,求两个整数的最大公约数,在主函数中输入两个整数,调用...
答:include<stdio.h> int gcd(int a, int b) //lgcd最大公因数 { int i = 0, g = 0;int m = 0;m = a < b? a : b;for(i = 1; i < m; i++){ if(a%i == 0 && b%i == 0){ g = i;} } return g;} int main(){ int a = 0, b = 0;int c = 0;pr...