E12.【C语言】练习:求两个数的最大公约数

1.枚举 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int tmp = 0;
	scanf("%d %d", &a, &b);
	if (a < b)
	{
		for (int i=1; i < a; i++)
		{
			if (0==a% i  && 0==b%i)
				tmp = i;
		}
	}
	if (a>b)
	{
		for (int i = 1; i < b; i++)
		{
			if (0 == b % i && 0 == a % i)
				tmp = i;
		}

	}
	if (a = b)
		tmp = a;
	printf("%d", tmp);
	return 0;
}

注意i不能从0开始否则有Integer division by zero报错,即整数除以零

但是代码可以进一步简化:

输入两个数-->找出最小数-->从最小数开始:从大向小找,一旦找到就是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int tmp = 0;
	scanf("%d %d", &a, &b);
	if (a > b)
		tmp = b;
	else
		tmp =a;
	while (1)//一直循环
	{
		if (0 == a % tmp && 0 == b % tmp)
		{
			printf("%d", tmp);
			break;
		}
		tmp--;
	}
	return 0;
}

2.辗转相除法 

定义:先用较大的数除以较小的数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。此时的除数就是所求的最大公约数。

18%24=18-->24%18=6-->18%6=0-->6是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int tmp = 0;
	scanf("%d %d", &a, &b);
	while (tmp=a%b)//循环,m%n=0退出
	{
		a = b;
		b = tmp;
     }
	printf("%d", b);
	return 0;
}

最小公倍数=a*b/最大公约数 

 

 

 

相关推荐

  1. E12.【C语言练习公约数

    2024-07-15 00:00:03       23 阅读
  2. C语言 整数公约数公倍数

    2024-07-15 00:00:03       17 阅读
  3. C语言公约数(辗转相除法)

    2024-07-15 00:00:03       52 阅读
  4. 找出公倍数公约数

    2024-07-15 00:00:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 00:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 00:00:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 00:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-15 00:00:03       69 阅读

热门阅读

  1. 分析 Android 应用中的日志信息应遵循的原则

    2024-07-15 00:00:03       20 阅读
  2. 牛客周赛51 F(静态区间最大连续子段和)

    2024-07-15 00:00:03       21 阅读
  3. 解锁Postman的API参数化:动态请求的秘诀

    2024-07-15 00:00:03       21 阅读
  4. 如何理解electron 的预加载脚本

    2024-07-15 00:00:03       20 阅读
  5. 力扣题解(回文子串)

    2024-07-15 00:00:03       21 阅读
  6. 题解:P9999 [Ynoi2000] tmostnrq

    2024-07-15 00:00:03       20 阅读