给定数字n,打印第n个素数费马数,其中费马数的形式为2 2 k +1。此代码应在理论上对任意n工作(即不硬编码),虽然它预计不会终止对n> 4(应该不会返回4294967297对于n = 5,因为4294967297是不是素数)。
请注意,尽管所有费马素数都为2 2 n +1 形式,但并非所有形式为2 2 n +1的数都是素数。挑战的目标是返回第n个素数。
测试用例
0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537
规则
- 不允许出现标准漏洞。
- 0索引和1索引均可接受。
- 这是代码高尔夫球,最低字节数获胜。
相关:可构造的n-gons
该程序理论上应在n> 4的情况下运行,尽管实际上这将永远无法工作,因为我们只知道5个Fermat素数。
—
poi830
由于只有5个已知术语,因此我真的不了解理论上为所有Fermat素数工作的目的。
—
Xcoder先生17年
@CodyGray测试用例具有误导性,因为它适用于
—
JAD
n=1:4
。所有fermat素数都是形式2^2^n+1
,但这并不意味着该形式的所有数字2^2^n+1
实际上都是素数。这是对的情况下n=1:4
,而不是n=5
例如。
我认为混淆的一部分是您在说输入是
—
Kamil Drakari
n
,而输出必须是形式2^(2^n)+1
。如果对输入和指数使用不同的变量,则可能会减少一些混乱。如果您明确声明“ n = 5不需要在合理的时间内输出,但一定不能输出4294967297”,这也可能会有所帮助
2^(2^n) + 1
在哪里n
?这与您的测试用例一致(我们知道它们已经是主要的,因此无需检查)。而且,您不希望程序在n> 4(并且n = 5是第一个非素数)的地方工作。