给大伙整道题娱乐一下
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
caulen
看懂了,这个是真快,但感觉要先知道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