C语言程序设计---求最大公因数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

刚刚开始学习的c语言的同学大多数都会遇到的问题----求最大公因数。很多同学最开始都不知道怎么处理这样的问题(包括博主自己(超小声))。这边介绍两种解法-----试除法和辗转相除法。


一、试除法思路

  1. 确定两个数之间较小值,创建新变量p,将较小值赋予p.
  2. 用p对两个数进行除余判断是否为0,不为0则p-1再重复第二步的操作直至结果为0,则是最大公因数。

代码如下:

int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int p = m < n ? m : n;//求较小值
	while (1)
	{
		if (m%p == 0 && n%p==0)
		{
			printf("%d\n", p);
			break;
		}
		p--;
	}

	return 0;
}

二、辗转相除法思路

  1. 用两个数之间一个数去除余另一个数,若不为0,将余数赋予新变量r.
  2. 再将除余数赋值给被除余的数,直至一个数除余另一个数的余数为0,则最大公因数是最后一次除余数。
  3. 注意点:这边不需要判断两个数的大小,例如 m为18,n为24,m%n的余数为18,再将24赋值给m,n被赋值18。

代码如下:

int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int r = 0;
	while (r=m%n)//当最后余数为0正好为假结束循环
	{
		m = n;
		n = r;
	}
	printf("%d\n", n);
	return 0;
}

三、最小公倍数思路

这里简单提一嘴:可以使用试除法或者是最小公倍数等于m*n/k,k是最大公因数。


四、写到最后

要是觉得写得还不错可以点个赞,要是文章哪里写得有问题或者什么疑问,可以在评论区留言。
沙漠的尽头必定是绿洲,坚持下去!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值