最小公倍数与素数的有趣问题
有趣的数学问题,在
b站看到的,太妙了。
原问题:求
2020个连续整数,其中恰好只有一个质数。
原答案:考虑
(2020!+2),(2020!+3),…,(2020!+2020)
一共
2019个连续合数。
令大于
2020!+2020的最小质数是
p。
则答案为:
p,p−1,p−2…,p−2019。
拓展:求连续
k个正整数中恰好只有一个素数,这
k个数,并且这
k个数的和是最小的,按顺序输出这
k个数
(k>1)。
考虑
1,2,3…,k的最小公共倍数
lcm(1,2,3,…,k)=x
对于
x+2,x+3,x+4,…,x+k,显然这连续
k−1个数都是合数。
设大于
x+k的最小质数是
p。
则答案为:
p−k+1,p−k+2,p−k+3,…,p。
证明:因为
p是大于
x+k的最小质数,则
[x+2,p−1]都为合数。
(p−1)≥x+k≥(x+2).
则至少有
(x+k)−(x+2)+1=k−1个合数。
则从
p开始
p−1,p−2,p−3…,p−(k−1)肯定都为合数。
对于编程来说,对于
k较小,我们只需找出那个质数就可以了,对于较大的数,需要用到高精度求
lcm,高精度求质数实属点麻烦。