给定一个非负整数N,将最小的奇数正整数输出为所有第一个N素数基数的强伪质数。
这是OEIS序列A014233。
测试用例(一索引)
1 2047
2 1373653
3 25326001
4 3215031751
5 2152302898747
6 3474749660383
7 341550071728321
8 341550071728321
9 3825123056546413051
10 3825123056546413051
11 3825123056546413051
12 318665857834031151167461
13 3317044064679887385961981
的测试用例N > 13不可用,因为尚未找到这些值。如果您设法按顺序查找下一个术语,请务必将其提交给OEIS!
规则
- 您可以选择采用
N零索引或一索引的值。 - 您的解决方案只适用于语言整数范围内的可表示值是可接受的(最多适用
N = 12于无符号64位整数),但是理论上您的解决方案必须在假设您的语言支持任意长度整数的情况下适用于任何输入。
背景
任何正偶数x可以写成如下形式x = d*2^s,其中d为奇数。d并且s可以通过反复分割计算n由2,直到商是通过2不再整除d是最终商,并且s是的2所划分的数目n。
如果一个正整数n是质数,那么费马小定理说明:
在任何有限域 Z/pZ(其中p有一些素数)中,的唯一平方根1是1和-1(或等价地为1和p-1)。
我们可以使用这三个事实来证明以下两个语句之一对于素数必须为true n(其中d*2^s = n-1和r是中的一些整数[0, s)):
的米勒罗宾素性测试操作通过测试上述权利要求的对换句:如果有一个基座a,使得上述两个条件都为假,则n不是素数。该基地a被称为见证人。
现在,测试每个数据库[1, n)对于大的计算时间将是非常昂贵的n。Miller-Rabin检验有一个概率变体,仅测试有限域中的一些随机选择的碱基。但是,已经发现仅测试素数a碱基就足够了,因此可以以有效和确定性的方式进行测试。实际上,并非所有的素数基数都需要进行测试-仅需要一个特定的数,并且该数取决于被测试的素数的大小。
如果测试的素数数量不足,则该测试会产生假阳性-奇数复合整数,而该测试无法证明其复合性。具体来说,如果一个基数a不能证明奇数个复合数的合成性,则该数称为对基的强伪素数a。这个挑战就是找到奇合数谁是强psuedoprimes到所有基地小于或等于N个素数(这相当于说,他们是强伪所有主要基地小于或等于N个质数) 。

