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

两个不全为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;
}

运行示例:

相关推荐
君君思密达几秒前
Leetcode Hot 100 题目详解-哈希表
数据结构·算法·leetcode
lucas_AI几秒前
Muse Glimmer 30B:Meta 难得给的真开源,强在哪、虚在哪
人工智能·算法
ai产品老杨4 分钟前
国产NPU视觉算法完整流程
算法
过期的秋刀鱼!7 分钟前
带替换的采样
人工智能·python·算法·决策树·机器学习
过期的秋刀鱼!25 分钟前
使用多个决策树
人工智能·算法·决策树·机器学习·数据挖掘
小徐不徐说38 分钟前
VS 2022 Visual Assist 破解
c++·visualstudio·工具·插件
203号居民1 小时前
LeetCode hot 100 —560. 和为 K 的子数组
java·算法·leetcode
退休倒计时2 小时前
【每日一题】LeetCode 20. 有效的括号 TypeScript
算法·leetcode·职场和发展·typescript
文心快码BaiduComate2 小时前
光本位联合文心快码打造面向光电芯片研发的全栈AI Agent Lightmate
算法
郝学胜-神的一滴2 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面