Python 3 , 78 77 75 70 68 62 bayt
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)
2 x baytlık golf oynadığı ve 4 tane daha yol açtığı için @xnor'a teşekkürler !
Çevrimiçi deneyin!
Arka fon
Hatırlatma; Wilson teoremi devletler tüm tamsayılar için k> 1 ,
burada bir ≡ b (mod d) bu araçlar A - B bölünemeyen bir d , yani, bir ve b bölünmesiyle aynı kalıntı olması d .
In Double-, hiper-, Alt ve Süper faktöriyellerin Wilson teoremleri , yazarlar bu cevabı inşaa olan çift faktöriyellerinin için genellemeler kanıtlamak. Çift faktörlü bir tamsayıdır ve k ≥ 0 ile tanımlanır
Yukarıda belirtilen makalenin 4. Teoremi aşağıdakileri ifade eder.
Dördüncü iktidara eşlerin her iki tarafını yükselterek,
Tüm garip astarlar için s . 1'den beri ! = 1 , eşdeğerlik de p = 2 için geçerlidir .
Şimdi, Wilson’un teoremine aynısını yapmak
Dan beri
onu takip ediyor
p her ne zaman asaldır.
Şimdi, k garip, pozitif, bileşik bir tamsayı olsun. Tanım olarak, a, b> 1 tamsayıları vardır , öyle ki k = ab .
Yana k garip, yani vardır bir ve b . Böylece, her ikisi de 1, 3,…, k - 2 dizisinde meydana gelir ve
nerede | bölünebilirliği belirtir.
Özetle, tüm tuhaf tamsayılar için k> 1
burada p (k) = 1 , k asal ise , p (k) = 0 , k kompozit ise.
Nasıl çalışır
F işlevi tek bir argümanla çağrıldığında, k , m ve j , 3 , 1 ve 0 olarak başlatılır .
Not ((k - 2) !!) 4 = 1 !! 4 = 1 = m . Aslında, m = ((k - 2) !!) 4 eşitliği her zaman tutacaktır. j bir şamandıradır ve daima ((k - 4) !!) % 4 (k - 2) / (k - 2) 'ye eşit olacaktır .
K <n iken , doğru argüman and
değerlendirilecektir. Yana j = ((k - 4) !!) 4 % (k - 2) / (k - 2) Birinci fıkrada kanıtlanmış olarak, j = 1 / (k - 2) eğer k - 2 asal ve bir j = 0 değilse Benzer şekilde, bu yana m% k = ((k - 2) !!) 4 eşittir 1 ise k asal ve 0 , değilse -m% k = k 1 - eğer k asal ve -m% k = 0 değilse. Bu nedenle, -m%k*j*2/k
değerlendirilen 2 (k - 1) / (k (k - 2)) = ((k - 2) + k) / (k (k - 2)) = 1 / k + 1 / (K - 2) eğer çift (k - 2, k)ikiz astarlardan ve eğer değilse 0'dan oluşur .
Yukarıdakileri hesapladıktan sonra sonucu özyinelemeli çağrının dönüş değerine ekleriz f(n,k+2,m*k**4,m%k/k)
. k tarafından artırılır alır 2 sadece tek değerler alır, böylece ‡ † biz çok kez m ile k 4 yana mk 4 = ((k - 2) !!) 4 k 4 = (k !!) 4 , ve o anki değerini geçmesi m% k / k - "eski" k bir asal ise 1 / k değerine eşitse , 0 değilse - işlev çağrısına j parametresi olarak .
Son olarak, k , n'ye eşit veya daha büyük olduğunda , f , False döndürür ve özyineleme durur. F (n) ' nin dönüş değeri, tüm 1 / k + 1 / (k - 2)' nin toplamı olacaktır; bu tür (k - 2, k) , bir çift asal çifti ve istenildiği gibi k <n'dir .
‡ sonuçlarını Arkaplan sadece tek tamsayı için paragraf beklemeye. Tamsayılar bile ikiz astar olamayacağından, onları güvenle atlayabiliriz.