我绝对没有理由写这段代码中,除了它是有趣的去写。在一个空闲的时刻,我不知道如何可以有效地计算出n '从'序列,给出了指数n。
是的,有人可能会使用素数的函数,它是足够小的素数集相当快。但是质数本身并不能解决这个问题。质数质数的完整列表返回小于或等于某个值。所以你可能会叫质数,印第安纳州,你有太少的质数生成特定的质数,你想要的。更糟糕的是,假设你想找到P (1 e8) ?是非常低效的生成100000000个质数的完整列表,只需要最后一个元素的列表。
一个密切相关的问题是问有多少个质数小于给定值。我们可以通过元素个数(质数(K)),但如果K数量非常大,也许2 ^ 32一样大,叫质数需要太长时间来执行。
nthprime函数有效地解决这两个问题。例如,P(12345678)是什么?
nthprime (123456)
ans =
1632899
看到它是质数。
isprime (1632899)
ans =
1
同样,我们可以确认它是123456个'质数的完整序列。
元素个数(质数(1632899))
ans =
123456年
找到质数编号[1 100 1000 10000 100000 1000000 10000000 1000000)
p = nthprime (10 ^ (0:8))
p =
2 29 541 7919 104729 1299709 15485863 1299709 2038074743
nthprime相当有效。例如,有7603553质数小于2 ^ 27日,但计算这些质数的完整列表可以是一个大的任务。如果由于某种原因,你只是想知道最后名单上,调用nthprime的成本远低于时间计算整个列表。
抽搐,p =质数(2 ^ 27);toc
运行时间是4.517565秒。
抽搐,体= nthprime (7603553); toc
运行时间是0.003868秒。
最后,nthprime可以与质数高达2 ^ 32,而启动函数运行的蒸汽远低于这个数字。大约有2 e8质数低于2 ^ 32。确切地说,我们可以使用nthprime告诉我们有多少:
nthprime (2 ^ 32, 1)
ans =
203280221
因此,第二个参数允许我们指定nthprime的操作。调用nthprime (K, 1)是一样的元素个数(质数(K))。但它是更高效的大型的K值。
再一次,我绝对没有这段代码的目标,没有理由写了,除了工作我如何解决这个问题本身。写的代码使用一个相对较小的数据库的质数本地化问题,然后用一个简单的'筛上。
引用作为
约翰D 'Errico (2023)。nthprime(//www.tatmou.com/matlabcentral/fileexchange/27073-nthprime), MATLAB中央文件交换。检索。
SequenceOfPrimes /
版本 | 发表 | 发布说明 | |
---|---|---|---|
1.0.0.0 |