我正在尝试使用惰性列表获取第一个10位素数。这是我基于(已经给出的)用于计算素数的代码的观点:
my @primes = 2,3,5, {first * %% none(@_), (@_[*-1] ... Inf)} ... -> $s {$s.chars == 10};
say @primes[@primes.elems-1];
该代码的问题是完成时间太长。
有没有一种快速的方法来获取第一个10位素数?
您可以通过以下方法使其更快:
is-prime
方法而不是手动算法因此得到:
say (1_000_000_000..*).first(*.is-prime)
哪个生产:
1000000007
您也可以过滤掉偶数,但是我怀疑is-prime
拒绝它们的速度与您分别测试它们的速度一样快。 (此外,事实证明,该数字非常接近前10位数字,因此实际上除了说明1_000_000_000
之外没有其他内容。)