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

  • Post author:
  • Post category:其他


#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);//将较小值和两数的差返回	
}



版权声明:本文为sthja原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。