C语言----求两个数的最大公约数-创新互联

求两个数的大公约数 1.题目:

输入两个数a,b,求两个数的大公约数。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名网站空间、营销软件、网站建设、古冶网站维护、网站推广。
2.思路:

思路一

以a进行减1,再对a和b分别对a-1求余。如果求余结果都为0,则是大公约数。如果求余结果都不为0,则继续a-1再减1。不断循环,直到结果求余都为0,则这个数就是两个数的大公约数。a一定是两个数大的数。

思路二

辗转相除法,一种数学解法,顾名思义,反复的除,最终得到两数的大公约数。 首先我们来分析下定理: 定理: 两个整数 的 大公约数 等于其中 较小 的那个数 和 两数 相除余数 的 大公约数 。辗转相除法也可求最小公倍数。以a和b都是可以的,无顺序关系。

3.解题代码

思路一

#define _CRT_SECURE_NO_WARNINGS

#includeint main()
{int a = 0;
	int b = 0;
	scanf("%d%d", &a, &b);
	int min = a >b ? b :  a;
	
	while (1)
	{if (a % min == 0 && b % min == 0)
		{	printf("大公约数是: %d", min);
			break;
		}
		min--;
	}

	return 0;
}

思路二

#define _CRT_SECURE_NO_WARNINGS

#includeint main()
{int a = 0;
	int b = 0;
	int x = 0;
	scanf("%d%d", &a, &b);

	while (x=a%b)
	{a = b;
		b = x;
	}
	printf("大公约数是: %d", x);

	return 0;
}
4.提示

第一点

int min = a >b ? b :  a;
int min=0;
	if (a >b)
		min = b;
	else
		min = a;

这两种都是求两个数大的数。

第二点
方案二中,以a和b都是可以的,无顺序关系。

举一反三

试求两个数的最小公倍数,辗转相除法也可求最小公倍数,比较方便。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:C语言----求两个数的最大公约数-创新互联
浏览路径:http://myzitong.com/article/ddgcpe.html