C语言——求两个数的最大公约数和最小公倍数

C语言——求两个数的最大公约数和最小公倍数求两个数的最大公约数的常用方法:※“辗转相除法”,又名欧几里得算法。基本方法如下:设两数为a和b(a>b),用a除以b,得a÷b=q……r,若r=0,则最大公约数为b;若r≠0,则再用b÷r,得b÷r=q……r’,若r’=0,则最大公约数为r’,若r’≠0,则继续用r÷r’……直到能够整除为止,此时的除数即为最大公约数。例如:a=99,b=18。a÷b=99÷18…

大家好,又见面了,我是你们的朋友全栈君。

求两个数的最大公约数的常用方法:

※“辗转相除法”,又名欧几里得算法。基本方法如下:

设两数为a和b(a>b),用a除以b,得a÷b=q……r,若r=0 ,则最大公约数为b;若r≠0 ,则再用b÷r,得b÷r=q……r’,若r’=0,则最大公约数为r’,若r’≠0,则继续用r÷r’……直到能够整除为止,此时的除数即为最大公约数。

例如:a=99,b=18。a÷b=99÷18=5……9不能整除,则继续b÷r=18÷9=2可以整除,则此时的除数9即为a和b两数的最大公约数。

①代码如下:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int t = 0;
	scanf("%d%d", &a, &b);//99,18
	while (a%b != 0){
		t = a%b;
		a = b;
		b = t;
	}
	printf("最大公约数为:%d\n", b);
	return 0;
}

首先,从键盘键入两个数a和b的值,变量t来保存余数。用while循环来判断能否整除,根据“辗转相除法”,先用第一个数a÷b再将除数b赋给a,余数赋给b,循环往复,直到能整除时结束循环,此时的除数b即为最大公约数。

(特别说明:若a<b,例如a=18,b=99。t=a%b=18;a=99;b=t=18。我们发现通过一次循环交换了a、b的值,这时就能满足a>b的条件了,在继续根据辗转相除的方法即可得到最大公约数。)

※拓展:求两个数的最小公倍数

关于最小公倍数与最大公约数,有这样的定理:最小公倍数×最大公约数=两数的乘积。

即:最小公倍数=两数的乘积÷最大公约数

②代码如下:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int t = 0;
	scanf("%d%d", &a, &b);//18 99
	int m = a;
	int n = b;
	while (a%b != 0){
		t = a%b;//余数 9
		a = b;//18
		b = t;//9
	}
	printf("最大公约数为:%d\n", b);//9
	printf("最小公倍数为:%d\n",m*n/b);
	return 0;
}

首先,从键盘键入两个数a和b的值,变量t来保存余数。再设两个变量m、n来保存a、b的原值。

先根据辗转相除法求出最大公约数b’(过程同①),再由最小公倍数=两数的乘积÷最大公约数=m×n÷b’求得最小公倍数。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145408.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 龙族h路明非和诺诺_龙族六

    龙族h路明非和诺诺_龙族六清晨,路明非正在熟睡,‘起床了路明非,太阳照屁股了!’芬格尔大喊,路明非终于被惊醒,揉了揉眼睛不满道:‘芬格尔你搞毛线啊!今天可是星期天!’‘星期你妹啊!今天要出任务了你TM还睡!’路明非一听有任务脑子瞬间清醒拿起手机一看“卧槽(#゚Д゚)!都八点了,要迟到了,再晚就要挨骂了。”芬格尔忙说“那你赶紧穿上衣服走了”。“哦,好好,那咱们走吧”。两人穿好衣服急急忙忙的向机场过去。等两人终于到…

    2022年10月8日
    0
  • 深度学习入门系列1:多层感知器概述

    深度学习入门系列1:多层感知器概述本人正在学习《deeplearningwithpython》–JasonBrownlee,有兴趣的可以一起学习。人工智能系列1:多层感知器概述待更新:人工智能系列2:用Keras构建你的第一个神经网络人工智能系列3:深度学习模型性能评价人工智能系列4:使用keras模型与scikit-learn进行通用机器学人工智能系列5:项目:花种的多分类人工智能系列6:项目:声纳二分类人工智能系列7:项目:波士顿房屋价格回归人工智能系列8:保存模型以便稍后进行序列化人工智能系列9:训练期.

    2022年9月13日
    0
  • eclipse中Git的使用

    eclipse中Git的使用eclipse中Git的使用

    2022年4月23日
    47
  • SQL datetime和smalldatetime区别

    SQL datetime和smalldatetime区别datetime存储大小8个字节,精确到分后的3为小数,日期范围从1753年1月1日到9999年12月31日;而smalldatetime存储大小为4个字节,精确到分,日期范围从1900年1月1日到2079年6月6日。参考http://msdn.microsoft.com/zh-cn/library/ms187819%28v=…

    2022年7月27日
    3
  • 如何理解Python 面向对象编程思想

    如何理解Python 面向对象编程思想Python面向对象编程思想:从四个方面来理解1.宽泛的面向对象的概念举例说明面向过程:做一件事情,从头到尾,每一个细节都要关注,重点在于过程面向对象:做一件事情,用对象去做,不关心细节和过程,万物皆对象

    2022年10月26日
    0
  • 在线网站客服系统源码

    在线网站客服系统源码在线网站客服系统源码支持ios苹果/Android安卓软件/app开发包装编号:9738655242264144小心心

    2022年7月19日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号