给大伙整道题娱乐一下
excel吧
全部回复
仅看楼主
level 13
生成2到100000(10万)内的所有质数的序列。尽量计算的快一些,不要卡太久。
参考信息:查质数表可知,2到316(100000^0.5)内一共有65个质数;2到100000内一共有9592个质数;范围内最大的质数为99991。
2024年01月28日 16点01分 1
level 13
还有个要求没说:必须用公式,结果必须是数组,如图所示[滑稽]
2024年01月28日 16点01分 2
level 13
2024年01月29日 04点01分 9
level 13
我来写我的了[滑稽]
=reduce(row(2:99999),row(1:65),lambda(s,n,let(a,index(s,n),filter(s,mod(s,a)+(s=a)))))
非常快,几乎是秒出结果[滑稽]
原理是埃拉托斯特尼筛法,每次筛掉数列里能被第n小的数整除的数但保留它本身,直到要判断的数大于最大数的平方根。这里用filter来筛选,用reduce做迭代计算,因为2到316一共有65个质数,所以至少迭代65次。
2024年01月29日 09点01分 14
看懂了,这个是真快,但感觉要先知道65,有点不完美,要是有变量和append就舒服了,这65搞得我强迫症都犯了~
2024年01月29日 09点01分
@caulen 这个好说,再筛一次2到316就行,数一数就知道迭代次数是7次(小于18的质数,2,3,5,7,11,13,17),得出这个范围内有65个质数
2024年01月29日 09点01分
1