子函数求公倍数公约数

发布于 2023-05-06  65 次阅读


想法

其实想法比较简单,就是从x和y中选取最大数, 依次递增,看是否能被x和y同时整除,若是则为公倍数。同样的,取x和y最小的看是否整除x和y就能判断是否为公约数

代码

#include<stdio.h>

int common_div(int x, int y)
{
	int c = (x < y) ? x : y;
	for (; c > 0; c--)
		if (x % c == 0 && y % c == 0)
			return (c);

	return 0;
}

int common_mul(int x, int y)
{
	int c = (x > y) ? x : y;
	for (; c <= x * y; c++)
		if (c % x == 0 && c % y == 0)
			return (c);
	return 0;
}

int main()
{
	int common_div(int x, int y);
	int common_mul(int x, int y);
	int m = 0, n = 0, k1 = 0, k2 = 0;

	printf("请输入需要求公倍数与公约数的两个整数(空格隔开):\n");
	scanf("%d %d", &m, &n);

	k1 = common_div(m, n);
	k2 = common_mul(m, n);

	printf("%d和%d的最大公约数为为%d", k2);
	printf("%d和%d的最最小公倍数为%d", k1);

	return 0;
}