C语言 如何求两整数的最大公约数与最小公倍数

 更新时间:2022年11月07日 10:15:07   作者:FanterC1107  
这篇文章主要介绍了C语言中如何求两整数的最大公约数与最小公倍数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

题目

用一函数求最大公约数,用另一函数调用此函数求出最大公约数,并用求出的最大公约数求最小公倍数。

具体要求如下:

  •  ①用全局变量。将最大公约数与最小公倍数设为全局变量,在主函数中输出它们的值。
  •  ②不用全局变量。最大公约数和最小公倍数由被调模块返回值。

思路

从两个数中选一个数,从这个数开始,逐步减一,当能够同时被两个数整除时,结束循环,即为最大公约数。

最小公倍数*最大公约数=两个数乘积。

代码

法一

#include<stdio.h>
int main()
{
	int x,y,z,a,b,c,d,t,x_0,y_0;
	printf("请输入两个整数:");
	scanf("%d,%d",&x,&y);
	x_0=x;y_0=y;
	if(x<y) t=x,x=y,y=t;
	do
	{
		a=x%y;
		if(a!=0) x=y,y=a,a=x%y;
	}while(x%y!=0);
	printf("这两个整数的最大公约数为:%d\n",y);
	c=x_0/y;d=y_0/y;
	z=y*c*d;
	printf("这两个整数的最小公倍数为:%d\n",z);
	return 0;
}

法二(局部变量)

#include<stdio.h>
int yue(int a,int b)
{
	int i,s,max_yue;
	for(i=a;i>0;i--)
		if(a%i==0&&b%i==0) {max_yue=i;break;}
	return(max_yue);
}
int bei(int a,int b)
{
	int yue(int a,int b);
	int max_bei;
	max_bei=a*b/yue(a,b);
	return(max_bei);
}
int main()
{
	int a,b,t,max_yue,max_bei;
	int yue(int a,int b);
	int bei(int a,int b);
	printf("请输入两个正整数:");
	scanf("%d,%d",&a,&b);
	if(a<b) {t=a;a=b;b=t;}
	max_yue=yue(a,b);
	max_bei=bei(a,b);
	printf("这两个数最大公约数为:%d\n最小公倍数为:%d\n",max_yue,max_bei);
}

法三(全局变量)

#include<stdio.h>
int max_yue,max_bei;
int yue(int a,int b)
{
	int i;
	for(i=a;i>0;i--)
		if(a%i==0&&b%i==0) {max_yue=i;break;}
	return(max_yue);
}
int bei(int a,int b)
{
	int yue(int a,int b);
	max_bei=a*b/yue(a,b);
	return(max_bei);
}
int main()
{
	int a,b,t;
	int yue(int a,int b);
	int bei(int a,int b);
	printf("请输入两个正整数:");
	scanf("%d,%d",&a,&b);
	if(a<b) {t=a;a=b;b=t;}
	max_yue=yue(a,b);
	max_bei=bei(a,b);
	printf("这两个数最大公约数为:%d\n最小公倍数为:%d\n",max_yue,max_bei);
}

运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C++从一个文件夹中读出所有txt文件的方法示例

    C++从一个文件夹中读出所有txt文件的方法示例

    这篇文章主要给大家介绍了关于C++从一个文件夹中读出所有txt文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • QT打包发布全流程(图文教程)

    QT打包发布全流程(图文教程)

    本文主要介绍了QT打包发布全流程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Opencv实现边缘检测与轮廓发现及绘制轮廓方法详解

    Opencv实现边缘检测与轮廓发现及绘制轮廓方法详解

    这篇文章主要介绍了Opencv实现边缘检测与轮廓发现及绘制轮廓方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • 深入学习C语言中memset()函数的用法

    深入学习C语言中memset()函数的用法

    这篇文章主要介绍了深入学习C语言中memset()函数的用法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C语言之复杂链表的复制方法(图示详解)

    C语言之复杂链表的复制方法(图示详解)

    下面小编就为大家带来一篇C语言之复杂链表的复制方法(图示详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • C++ 中的虚函数表及虚函数执行原理详解

    C++ 中的虚函数表及虚函数执行原理详解

    这篇文章主要介绍了C++ 中的虚函数表及虚函数执行原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C语言实现数组元素排序方法详解

    C语言实现数组元素排序方法详解

    这篇文章主要为大家介绍了C语言算法练习中数组元素排序的实现方法,文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2023-02-02
  • C++命名空间 缺省参数 const总结 引用总结 内联函数 auto关键字详解

    C++命名空间 缺省参数 const总结 引用总结 内联函数 auto关键字详解

    这篇文章主要介绍了C++命名空间 缺省参数 const总结 引用总结 内联函数 auto关键字详解的相关资料,需要的朋友可以参考下
    2023-01-01
  • C++实现LeetCode(769.可排序的最大块数)

    C++实现LeetCode(769.可排序的最大块数)

    这篇文章主要介绍了C++实现LeetCode(769.可排序的最大块数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • OpenCV4 实现背景分离的详细步骤(背景减法模型)

    OpenCV4 实现背景分离的详细步骤(背景减法模型)

    背景分离(BS)是一种通过使用静态相机来生成前景掩码(即包含属于场景中的移动对象像素的二进制图像)的常用技术,本文给大家介绍OpenCV4 实现背景分离的详细步骤,需要的朋友可以参考下
    2021-09-09

最新评论