2520是最小的能被1到10整除的数,最小能被1到20整除的正数是多少?

思路:

1.先把1~n中的所有的质数找出来,以减少列表长度。将这所有质数相乘得到初始值S。列表list中剩下的全是非质数。
2.依次读出列表list的值作为当前值i,因为i是非质数,所以我们要找出组成这个非质数的最小质数j
3.使用三元式公式得到新的S的值:新的S = 初始值S能否整除当前值i ? 初始值S : 初始值S * 组成i的最小质数j
4.循环2.3步,最后得到最小倍数。

php代码示例:

$n = 20;
$prime = [];
$unPrime = [];


// 初始值
$s = 1;

// 分离出n以内的素数和非素数
for ($i = 2; $i < $n; $i++) {
	$tmp = sqrt($i);
	$isPrime = true;
	for ($j = 2; $j <= $tmp; $j++) {
		if ($i % $j == 0) {
			$isPrime = false;
			break;
		}
	}
	
	if ($isPrime) {
		$s *= $i;
		$prime[] = $i;
	} else {
		$unPrime[] = $i;
	}
}

echo "1~{$n}中的素数为:" . join(' ', $prime);
echo "<br/>";

foreach($unPrime as $v) {
	if ($s % $v === 0) {
		continue;
	}
	
	// 找到非素数中的最小素数
	foreach($prime as $p) {
		if ($v % $p === 0) {
			$s *= $p;
			break;
		}
	}
}

echo "能被1~{$n}中所有正整数都整除的最小整数是:{$s}";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值