C语言入门——求最大公约数(2种方法超详细)

这篇具有很好参考价值的文章主要介绍了C语言入门——求最大公约数(2种方法超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本介绍:
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个。

最大公约数
能够整除一个整数的整数称为其的约数(如5是10约数);
能够被一个整数整除的整数称为其的倍数(如10是5的倍数);
如果一个数既是数A的约数,又是数B的约数,称为A,B的公约数,A,B的公约数
中最大的一个(可以包括AB自身)称为AB的最大公约数

定义:
如果有一个自然数a自然数b整除,则称a为b的倍数b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数

例: 在4、6中,   2就是4,6的最大公约数.

法一:枚举

1.设t为2;
2.如果 u 和 v 都能被 t 整除,则记下这个 t ;
3. t 加 1 后重复第2步,直到t等于u 或 v ;
4.那么,曾经记下的最大的可以同时整除 u 和 v 的 t 就是 gcd;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a, b,i;
	scanf("%d %d", &a, &b);
	int min,ret=0;
	for (i = 1; i < (min = a < b ? a : b); i++)
	{
		if (a % i == 0 && b % i == 0)
			ret = i;
	}
	printf("%d和%d的最大公约数是%d", a, b, ret);
	return 0;
}

输入: 4和6 看下结果

C语言入门——求最大公约数(2种方法超详细)

 

法二: 辗转相除法

1.如果b等于0,计算结束,a就是最大公约数;

2.否则,计算a除以b的余数,让a等于b,而b等于那个余数;

3.回到第一步。

例如:4 % 6    a=6  b=4

           6%4      a=4  b=2

           4%2       a=2   b=0

所以4和6最大公约数为2。

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a, b;
	int t;
	scanf("%d %d", &a, &b);
	while(b!=0)
	{
		t = a % b;
		a = b;
		b = t;
	}
	printf("gcd=%d", a);
	return 0;
}

这时肯定有人要问最小公倍数

tip:最小公倍数等于两数之积除以其最大公约数

只需要定义一个 变量(最小公倍数)= (a * b) / gcd文章来源地址https://www.toymoban.com/news/detail-482155.html

到了这里,关于C语言入门——求最大公约数(2种方法超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言—求最大公约数(4种算法思路)

    如果大数可以整除小数,那么最大公约数为小数。如果不能整除小数,那么这两个数就按大到小依次对比小数小的数求余,遇到都能够整除的,就是最大公约数。 用a对b求余,若余数为0,则除数b为最大公约数。若余数不为0,将此余数r作为新的除数,b作为新的被除数,重新

    2024年04月13日
    浏览(39)
  • 最大公约数的四种方法

    求两数的最大公约数,一共有四种方法:暴力穷举法、更相减损法、辗转相除法、stein 算法,小女不才,花了几天的时间终于把这几种方法全部弄明白,现在就把它们全部分享出来。 首先,假设被求的两个数为 x、y,且 x y。最大公约数 d = gcd (x , y) 正如名字所说,暴击穷举法

    2024年02月05日
    浏览(73)
  • 【C语言】两个整数最大公约数和最小公倍数

    输入两个整数,求这两个数的最大公约数和最小公倍数。 第一种求法(辗转相除法)这个方法代码较洁简,我也比较推荐就是刚开始有点比较难了解。 首先,来看看怎么求最大公约数,求最大公约数需要用到 欧几里得算法 ,也称为辗转相除法。算法就是用两数中较大的数

    2024年02月04日
    浏览(48)
  • 【C语言】辗转相除法求最大公约数(详解)

    辗转相除法(又称欧几里德算法)是一种用于求解两个整数的最大公约数的方法。本文将使用C语言来实现辗转相除法,并对其原理进行解释。 辗转相除法的原理非常简单。假设有两个整数a和b,其中a b。通过对a除以b求余数,得到余数r1。然后把b除以r1求余数,得到余数r2。如

    2024年02月07日
    浏览(54)
  • C语言经典算法之Euclidean算法求最大公约数

    目录 前言 A.建议 B.简介 一 代码实现 二 时空复杂度 A.循环实现 a.时间复杂度(Time Complexity): b.空间复杂度(Space Complexity): B.递归实现 a.时间复杂度(Time Complexity): b.空间复杂度(Space Complexity): 三 优缺点 A.循环实现 a.优点: b.缺点: c.总结: B.递归实现 a.优点:

    2024年03月26日
    浏览(55)
  • 求最大公约数的几种常见的方法 【详解】

    目录 一、关于公约数 二、计算最大公约数的方法  1. 辗转相除法(欧几里得算法) 2. 更相减损法(辗转相减法) 3. 分解质因数法 4. 穷举法  5. 递归法 6. 短除法 三、总结 首先 ,先介绍一下公约数: 公约数(公因数),一个能被若干个整数同时整除的的整数,公约数中最大

    2024年02月08日
    浏览(60)
  • C++求最大公约数和最小公倍数的方法

    每次遇到最大公约数和最小公倍数时总是忘记,这里总结了两种求最大公约数和最小公倍数的方法。 欧几里得算法是求解两个数的最大公约数的一种常用方法。该算法基于以下原理:两个整数的最大公约数等于其中较小数和两数的余数之间的最大公约数。可以通过递归调用该

    2024年02月15日
    浏览(47)
  • 【C语言】一篇博客带你弄懂最大公约数和最小公倍数

    我们在C语言的学习中,经常会遇到这样一些数学题目,良好掌握这些题目有利于我们理解和学习C语言,话不多说,直接进入主题 最大公约数: 首先我们举个例子,比如12 和16,12的约数有(1,2 ,3,4,6,12),16的约数有(1,2,4,8,16)公约数就是两个数共同的约数,(1,2,4)而公约数

    2024年02月04日
    浏览(48)
  • 你会求两个数的最大公约数吗(三种方法)?

    目录 前言 一、枚举法 二、辗转相除法 三、更相减损法 如何求两个数的最大公约数是非常经典的问题,求解的方法也有很多,本文主要介绍其中的三种方法,分别是: 枚举法、辗转相除法和更相减损法 。   两个数的最大公约数一定小于或等于两数中较小的数,并且这两个

    2023年04月08日
    浏览(49)
  • C语言——输入两个正整数m和n,求其最大公约数和最小公倍数

    目录 1.最大公约数求法 1.1辗转相除法 1.2相减法 2.最小公倍数求法 3.代码实现 4.结果展示 1.1辗转相除法 设有两整数a和b: a%b得余数c 若c==0,则b即为两数的最大公约数 若c!=0,则a=b,b=c,再回去执行第一步。 例如:求27和15的最大公约数过程为: 27÷15 余12 15÷12 余3 12÷3 余0 因

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包