C语言例4-28:求两个正整数的最大公约数。

算法分析:

  1. 输入两个正整数m和n
  2. m%n 的余数 r,然后 m=n;n=r;
  3. 当 n=0, 则m是最大公约数,算法结束;否则转至执行2,重复上述过程,直到n=0为止

代码如下:

复制代码
//求两个正整数的最大公约数。
#include<stdio.h>
int main(void)
{
	int m,n,r;
	printf("输入两个正整数: \n");
	scanf("%d,%d",&m,&n);
	
	while(n)
	{
		r=m%n;
		m=n;
		n=r;
	}
	printf("这两个正整数的最大公约数是: %d\n",m);
	
	return 0;
}

结果如下:

**辗转相除法:**是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。

例如,求(319,377):

∵ 319÷377=0(余319)

∴(319,377)=(377,319);

∵ 377÷319=1(余58)

∴(377,319)=(319,58);

∵ 319÷58=5(余29)

∴ (319,58)=(58,29);

∵ 58÷29=2(余0)

∴ (58,29)= 29;

∴ (319,377)=29。

可以写成右边的格式。

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。

相关推荐
似是燕归来8 小时前
嵌入式工程师进阶指南:适配器编程设计模式一
c语言·stm32·适配器模式·嵌入式开发
西门吹-禅9 小时前
java springboot N+1问题
java·开发语言·spring boot
skywalk81639 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
IT笔记11 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
2zcode11 小时前
免费开源项目文档:基于MATLAB卷积神经网络的口罩佩戴检测系统
开发语言·matlab·cnn
逝水无殇11 小时前
C# 运算符重载详解
开发语言·后端·c#
TPBoreas11 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言
额鹅恶饿呃11 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
敲代码的嘎仔12 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
江华森12 小时前
Python 实现高德地图找房(一):环境搭建与数据爬虫
开发语言·爬虫·python