C语言求解最小公倍数(三种思路)-创新互联

思路一.利用大公倍数(低级)

输入两个数a,b后,若两个数直接相乘,可能是这两个数的大公倍数,如5x7;也可能不是,如6x9,很容易就能看出6x9=54和6x9的最小公倍数18是除3的关系,而3就是6和9的大公倍数。

创新互联公司专注于尼泸西企业网站建设,响应式网站开发,商城系统网站开发。尼泸西网站建设公司,为尼泸西等地区提供建站服务。全流程按需网站制作,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

思路:

1.找大公约数

利用循环,循环变量i作为除数,大就让循环变量大开始自减,i从较小的数开始自减。

2.输出并跳出循环

输出:两者相乘除大公约数

#includeint main()
{int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int i = 0;
	for (i = a0 ; i--)
	{if (a % i == 0 && b % i == 0)
		{	printf("%d\n",a*b/i);	
			break;
		}
	}
	return 0
}
思路二.自增

首先输入的两个数a,b,它们的公倍数一定大于等于较大的数,那么我们是不利用循环,让循环变量i从较大的值开始增加,每次循环利用循环变量i是否能整除较小的那个数,就可以得到最小公倍数了。

#includeint main()
{int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int min = a >b ? a : b;//min为公倍数的可能最小取值
	while (1)
	{if (min % a == 0 && min % b == 0)
		{	printf("%d", min);
			break;
		}
	}
	return 0;
思路三.乘法与自增结合,减少思路二中循环的次数(最优)

两个数的最小公倍数一定是这两个数每一个的倍数,那么我们结合思路二,只需要拿出二者之一,让它成倍的增长,然后判断每增长一倍后是否整除另一个数,这样既可以减少循环的次数,还不用判断两个数的大小,是不是比思路二简单很多。

#includeint main()
{int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int i = 0;
	for (i = 1;; i++)
	{if (a * i % b == 0)
		{	printf("%d\n", a * i);
			break;
		}
	}
	return 0;
}

欢迎各路佬提供新思路,求三连~~
在这里插入图片描述

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


分享标题:C语言求解最小公倍数(三种思路)-创新互联
分享路径:http://pwwzsj.com/article/dhsshg.html