Python 3中,78个 77 75 70 68 62字节
f=lambda n,k=3,m=1,j=0:k<n and-m%k*j*2/k+f(n,k+2,m*k**4,m%k/k)
感谢@xnor为2 4个字节打高尔夫球,并为另外4个字节铺平了道路!
在线尝试!
背景
回想一下威尔逊定理,对于所有整数k> 1,
其中a b(mod d)表示a-b被d整除,即a和b除以d时具有相同的残基。
在关于双阶乘,超阶,子阶和超阶乘的威尔逊定理中,作者证明了双阶乘的泛化,并以此为基础建立了答案。整数k≥0的双阶乘由下式定义
前述论文的定理4陈述如下。
将全等式的两边提升到第四次方,我们推论得出
对于所有奇数素数p。从1开始!! = 1时,等价度在p = 2时也成立。
现在,对威尔逊定理做同样的发现
以来
它遵循
只要p为质数。
现在,让k为奇数,正整数。根据定义,存在整数a,b> 1,从而k = ab。
由于k是奇数,所以a和b也是如此。因此,它们都以1、3,…,k-2和
其中| 表示可分割性。
总结,对于所有奇数整数k> 1
其中P(k)的1 =如果ķ是素数,P(k)的= 0如果ķ是复合材料。
怎么运行的
当函数˚F是带一个单个参数,ķ,米,和Ĵ初始化为3,1,和0。
注意((k-2)!!)4 = 1 !! 4 = 1 =米。实际上,等式m =((k-2)!!)4始终存在。j是一个浮点数,将始终等于((k-4)!!)4%(k-2)/(k-2)。
当k <n时,and
将评估的正确参数。由于j =((k-4)!!)4%(k-2)/(k-2),如第一段所述,如果k-2为素数且j为j,则j = 1 /(k-2)。= 0,如果不是。同样地,由于米%K =((K - 2)!)4等于1,如果ķ是素数,0如果没有,-m%K = K - 1如果ķ是素数,-m%K = 0如果不是。因此,计算结果为2(k-1)/(k(k-2))=((k-2)+ k)/(k(k-2))= 1 / k + 1 /(k-2)如果对(k-2,k)-m%k*j*2/k
由双素数组成,如果不是,则为0。
经过以上计算,我们将结果添加到递归调用的返回值中f(n,k+2,m*k**4,m%k/k)
。ķ被递增2,从而只需要奇数值‡†,我们乘法中号由ķ 4自MK 4 =((K - 2)!)4 ķ 4 =(K !!)4,和通过的电流值m%k / k –作为“旧” k为质数,等于1 / k,否则为0 –作为函数调用的参数j。
最后,一旦k等于或大于n,f将返回False,并且递归停止。f(n)的返回值将是所有1 / k + 1 /(k-2)的总和,因此(k-2,k)是双素数对,并且k <n(根据需要)。
• “ 背景”段落的结果仅适用于奇数整数。由于即使整数也不能是双质数,所以我们可以安全地跳过它们。