C语言:最大公约数与最小公倍数

1.求最大公约数

1.暴力法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int tmp = a > b ? b : a;
	while (1)
	{
		if (a % tmp == 0 && b % tmp == 0)
		{
			break;
		}
		else
		tmp--;
	}
    printf("%d", tmp);

	return 0;
}

2.辗转相除法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	while (1)
	{
		int c = a % b;
		if (a % b == 0)
		{
			break;
		}
		else
		{
			a = b ; 
			b = c;
		}
	}
    printf("%d就是最大公约数", b);

	return 0;
}

3.更相减损数

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	while (1)
	{
		if (a == b)
		{
			break; 
		}
		if (a > b)
		{
			a = a - b;
		}
		if (b > a)
		{
			b = b - a;
		}
	}
	printf("最小公约数数是%d", a);
	return 0;
}

2.求最小公倍数

1.暴力法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//计算a和b的最小公倍数
	int m = (a > b ? a : b);
	while (1)
	{
		if (m % a == 0 && m % b == 0)
		{
			break;
		}
		m++;
	}
	printf("%d\n",m);
	return 0;

}

2.累乘法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	
	int i = 1;
	while (a * i % b)
	{
		i++;
	}
	printf("%d\n", a * i);
	return 0;

}

猜你喜欢

转载自blog.csdn.net/weixin_75037533/article/details/138661466
今日推荐