用C语言求两个正整数的最大公约数,包含穷举法,欧几里得算法,递归方法。主函数主要负责调用和输入正整数

#include<stdio.h>
int Exhaustion(int a, int b);//定义穷举法的函数
int main()
{
	int a, b,cd;
	printf("Please input two number:");
	scanf_s("%d%d", &a, &b);
	cd= Exhaustion( a, b);
	printf("%d", cd);
	return 0;
}
//穷举法
int Exhaustion(int a, int b)
{
	int i,t;
	t = a < b ? a : b;//t取较小值
	for(i=t;i>0;i--)
		if (a % i == 0 && b % i == 0)
		{
			return i;
			break;
		}

}
//欧几里得算法

#include<stdio.h>
int O(int a, int b);//欧几里得算法的函数
int main()
{
	int a, b,cd;
	printf("Please input two number:");
	scanf_s("%d%d", &a, &b);
	cd= O( a, b);
	printf("%d", cd);
	return 0;
}
int O(int a, int b)
{
	int i,t,d,s;
	s = a < b ? a : b;//确定两个数的大小
	d = a > b ? a : b;
	for (i = 1;; i++)
	{
		
		t = d % s;//取余
		if (t ==0)
		{
			return s;
			break;
		}
		else
		{
			d = s;
			s = t;
		}

	}
}
//递归方法
#include<stdio.h>
int Recursion(int a, int b);
int main()
{
	int a, b,cd;
	printf("Please input two number:");
	scanf_s("%d%d", &a, &b);
	cd= Recursion( a, b);
	printf("%d", cd);
	return 0;
}
int Recursion(int a, int b)
{
	int i,d,s;
	s = a < b ? a : b;//确定两个数的大小
	d = a > b ? a : b;
	if (s == 0)return d;
	d = d - s;
	 Recursion(s,d);//将较小值和两数的差返回	
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值