php专区

 首页 > php专区 > PHP进阶 > 算法 > 被1至20整除的最小正整数问题

被1至20整除的最小正整数问题

分享到:
【字体:
导读:
         摘要:求能被1到20的数整除的最小正整数。最直觉的方法是求1到20这20个数的最小公倍数。求n个数的最小公倍数,以a,b,c三个数为例,他们的最小公倍数等于:先求a与b的最小公倍数m,然后m和c的最小公倍数即着三个数的最小公倍数。 ...

被1至20整除的最小正整数问题

求能被1到20的数整除的最小正整数。最直觉的方法是求1到20这20个数的最小公倍数。

求n个数的最小公倍数,以a,b,c三个数为例,他们的最小公倍数等于:先求a与b的最小公倍数m,然后m和c的最小公倍数即着三个数的最小公倍数。

求两个数a,b的最小公倍数嘛,先取出其中较大的那个比如a,然后再用k*a去试探能否被较小那个数整除,其中,k是从1开始的自然数 k*a

int get_lcm(int a, int b)
{
	if(a==b)
	{
		return a;
	}
	int bigger = a
  
  	

另外一种比较好的方法,以n取10为例

2,3,4,5,6,7,8,9,10 (1没有什么意义,忽略掉了)

将这些数字分解质因数:

2, 3, 2*2, 5, 2*3, 7, 2*2*2, 3*3, 2*5

这些质数分别是2, 3, 5, 7

最终答案可以表示为:

2^a * 3^b * 5^c * 7^d (其中,x^y表示x的y次方)

其中的英文字母表示在上面分解质因数时所得到的表达式中质因数在同一个表达式中出现的次数的最大值。

质因数2出现次数最多是在8=2*2*2中,其出现了3次,所以a为3。

同理可得到:2^3 * 3^2 * 5^1 * 7^1 = 2520。

本文地址:http://www.nowamagic.net/librarys/veda/detail/939,欢迎访问原出处。

被1至20整除的最小正整数问题
分享到:
亲身体验一下KMP算法
亲身体验一下KMP算法 在C/C++语言编程过程中,一般的字符串搜索操作都是通过标准库的strstr()函数来完成的,这在通常的情况下,因为字符串的搜索操作不多,并不会产生效率问题。实际上,这个函数的时间复杂度不容乐观。如果要从长度为n的字符串中查找长度为m的子字符串,那么这个strstr()函数的最坏时间复杂度为O...
从1到1亿这1亿个数里面有多少个1?
从1到1亿这1亿个数里面有多少个1? 乍看这题真够唬人的,群里看到这个题目后争先恐后的说看法。最简单的办法不外乎就是遍历每个数,然后toString() 看看里面有多少个1,最后全部加起来,这是我们得到标准答案的办法。 群里3个人写了3个笨方法都跑出来了,3个笨方法,呵呵 有意思,笨方法也不一样。 程序的...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……