用穷举法,欧几里得算法,递归求两个整数的最大公约数

穷举法求最大公约数

cs 复制代码
#include<stdio.h>
int Gcd(int i, int j)//穷举法求最大公约数
{
	int min = (i > j) ? j : i;//条件表达式,找到最小值
	while (1)
	{
		if (i % min == 0 && j % min == 0)
			break;
		min--;
	}
	return min;
}
int main()
{
	int i = 0;
	int j = 0;
	printf("请输入两个整数:\n");
	scanf("%d,%d", &i, &j);
	int ret = Gcd(i, j);
	printf("%d", ret);
	return 0;
}

欧几里得算法(辗转相除法)求最大公约数

cs 复制代码
#include<stdio.h>
int Gcd(int i, int j)//欧几里得算法(也称辗转相除法)
{
	int r = 0;
	int max = 0;//存储i,j中的最大值
	int min = 0;//存储i,就,中的最小值
	if (i < j)
	{
		max = j;
		min = i;
	}
	else
	{
		max = i;
		min = j;
	}
	while (1)
	{
		r = max % min;
		max = min;
		min = r;
		if (r == 0)
			break;
	}
	return max;
}
int main()
{
	int i = 0;
	int j = 0;
	printf("输入两个整数:\n");
	scanf("%d,%d", &i, &j);
	int ret = Gcd(i, j);
	printf("%d", ret);
	return 0;
}

用递归求最大公约数

cs 复制代码
#include<stdio.h>
int Gcd(int i, int j)//递归求最大公约数
{
	if (i > j)//如果i<j,则i和j与i-j和j的最大公约数相同,即Gcd(i,j)=Gcd(i-j,j)
		return Gcd(i - j, j);
	else if (i < j)//如果j < i,则i和j与i和j-i的最大公约数相同,即Gcd(i,j)=Gcd(i,j-i)
		return Gcd(i, j - i);
	else
		return i; //如果i=j,则i和j的最大公约数与i值和j值相同, 即Gcd(i, j) =i=j
}
int main()
{
	int i = 0;
	int j = 0;
	printf("输入两个整数:\n");
	scanf("%d,%d", &i, &j);
	int ret = Gcd(i, j);
	printf("%d", ret);
	return 0;
}
相关推荐
v_34836087622 分钟前
Android native端 堆栈打印
android·算法
residual_fan3 分钟前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
GreenTea42 分钟前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
深圳满意度咨询2 小时前
医院满意度数字化测评系统:从数据采集到智能决策的技术实践
算法
xiangyun612 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun613 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
OKkankan4 小时前
LangChain 能力详解!:输出解析、RAG、向量数据库与 Retriever 检索器
数据结构·python·langchain·ai应用
蓝速科技4 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
302wanger4 小时前
推荐下我的两个AI信息源
算法
索尔~古德曼4 小时前
CF——错题的集合
算法