求两个数的最大公约数与最小公倍数

#include <stdio.h>

int main()
{
	int a;
	int b;
	int max = 0;
	int min = 0;
	int a1;
	int b1;
	scanf_s("%d %d",&a,&b);

	for (int i = 1; i <= a && i <= b; i++)
	{
		if (a % i == 0 && b % i == 0)
		{
			max = i;
		}
	}
	//printf("%d",max);

	a1 = a / max;
	b1 = b / max;
	min = a1 * b1 * max;

	printf("%d,%d",max,min);
	
	return 0;
}

或者是:

#include <stdio.h>

int gcd(int a, int b)
{
	while (b != 0) 
	{
		int temp = b;
		b = a % b;
		a = temp;
	}
	return a;
}

int lcm(int a, int b)
{
	return a * b / gcd(a, b);
}

int main() 
{
	int a, b;
	scanf_s("%d %d", &a, &b);
	int greatestCommonDivisor = gcd(a, b);
	int leastCommonMultiple = lcm(a, b);
	printf("%d,%d", greatestCommonDivisor, leastCommonMultiple);
	return 0;
}

第二种方法运用到了辗转相除法以及函数的一个运用,第一种方法则较为直观

猜你喜欢

转载自blog.csdn.net/XYOfjh/article/details/143660727
今日推荐