欧几里得算法求最大公约数

两个不全为0的非负整数m,n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。

计算gcd(m,n)的欧几里得算法:

第一步:

如果n为0,则返回m作为结果,同时过程结束;否则进入第二步。

第二步:

m除以n,将余数赋值给l。

第三步:

将n的值赋值给m,将l的值赋值给n,返回第一步。

示例:

例如求gcd(27,30)

gcd(27,30)= gcd(30,27)= gcd(27,3)= gcd(3,0)=3

27与30的最大公约数为3

C语言欧几里得算法求最大公约数:

C语言代码:

cpp 复制代码
/*
	求两个不全为0的非负整数的最大公约数
		欧几里得算法
*/

#include<stdio.h>
#include<stdbool.h>

// 欧几里得算法函数
int OJLD(int x, int y)
{
	int z;
	while (y != 0)
	{
		z = x % y;
		x = y;
		y = z;
	}
	return x;
}

int main()
{
	int m, n, result;
	bool flag;
	do
	{
		flag = false;
		printf("请输入两个不全为0的非负整数,中间以空格分隔:\n");
		scanf_s("%d %d", &m, &n);

		//输入检验,确保m,n为两个不全为0的非负整数
		if ((m < 0 || n < 0)||(m==0 && n==0))
		{	
			flag = true;
			printf("您的输入有误,请重新输入\n");
		}
	} while (flag);

	result = OJLD(m, n);  //调用欧几里得函数计算最大公约数
	printf("%d与%d的最大公约数为%d", m,n,result);  //输出结果
	return 0;
}

运行示例:

相关推荐
luckys.one1 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
~|Bernard|3 小时前
在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
算法·conda
战术摸鱼大师3 小时前
电机控制(四)-级联PID控制器与参数整定(MATLAB&Simulink)
算法·matlab·运动控制·电机控制
Christo33 小时前
TFS-2018《On the convergence of the sparse possibilistic c-means algorithm》
人工智能·算法·机器学习·数据挖掘
好家伙VCC4 小时前
数学建模模型 全网最全 数学建模常见算法汇总 含代码分析讲解
大数据·嵌入式硬件·算法·数学建模
利刃大大4 小时前
【高并发内存池】五、页缓存的设计
c++·缓存·项目·内存池
C语言小火车5 小时前
【C++八股文】基础知识篇
c++·tcp/ip·const·智能指针·多线程同步·static关键字·c++内存模型
liulilittle5 小时前
IP校验和算法:从网络协议到SIMD深度优化
网络·c++·网络协议·tcp/ip·算法·ip·通信
眠りたいです5 小时前
基于脚手架微服务的视频点播系统-播放控制部分
c++·qt·ui·微服务·云原生·架构·播放器
Want5956 小时前
C/C++圣诞树①
c语言·开发语言·c++