lambda n:sum((n+n%6-3)*n%k<1for k in range(2,4*n))==2
Cobalah online!
Latar Belakang
Semua bilangan bulat mengambil salah satu dari formulir berikut, dengan bilangan bulat k : 6k - 3 , 6k - 2 , 6k - 1 , 6k , 6k + 1 , 6k + 2 .
Karena 6k - 2 , 6k , dan 6k + 2 semuanya genap, dan karena 6k - 3 dapat dibagi dengan 3 , semua bilangan prima kecuali 2 dan 3 harus dalam bentuk 6k - 1 atau 6k + 1 . Karena perbedaan pasangan prime kembar adalah 2 , dengan pengecualian (3, 5) , semua pasangan prime kembar berbentuk (6k - 1, 6k + 1) .
Biarkan n dalam bentuk 6k ± 1 .
Jika n = 6k -1 , maka n + n% 6 - 3 = 6k - 1 + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 .
Jika n = 6k + 1 , maka n + n% 6 - 3 = 6k + 1 + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1 .
Jadi, jika n adalah bagian dari pasangan kembar utama dan n ≠ 3 , kembarannya adalah n + n% 6 - 3 .
Bagaimana itu bekerja
Python tidak memiliki tes primality bawaan. Meskipun ada cara-cara singkat untuk menguji satu nomor untuk primality, melakukannya untuk dua nomor akan panjang. Kami akan bekerja dengan pembagi.
sum((n+n%6-3)*n%k<1for k in range(2,4*n))
menghitung berapa bilangan bulat k dalam interval [2, 4n) yang membagi (n + n% 6 - 3) n secara merata, yaitu, menghitung jumlah pembagi dari (n + n% 6 - 3) n dalam interval [2 , 4n) . Kami mengklaim bahwa penghitungan ini adalah 2 jika dan hanya jika n adalah bagian dari pasangan utama kembar.
Jika n = 3 (prima kembar), (n + n% 6 - 3) n = 3 (3 + 3 - 3) = 9 memiliki dua pembagi ( 3 dan 9 ) dalam [2, 12) .
Jika n> 3 adalah prima kembar, seperti yang terlihat sebelumnya, m: = n + n% 6 - 3 adalah kembarannya. Dalam hal ini, mn memiliki tepat empat pembagi: 1, m, n, mn .
Sejak n> 3 , kita memiliki m> 4 , jadi 4n <mn dan tepat dua pembagi ( m dan n ) masuk dalam interval [2, 4n) .
Jika n = 1 , maka (n + n% 6 - 3) n = 1 + 1 - 3 = -1 tidak memiliki pembagi dalam [2, 4) .
Jika n = 2 , maka (n + n% 6 - 3) n = 2 (2 + 2 - 3) = 2 memiliki satu pembagi (sendiri) dalam [2, 8) .
Jika n = 4 , maka (n + n% 6 - 3) n = 4 (4 + 4 - 3) = 20 memiliki empat pembagi ( 2 , 4 , 5 , dan 10 ) dalam [2, 16) .
Jika n> 4 genap, 2 , n / 2 , dan n semua membagi n dan, oleh karena itu, (n + n% 6 - 3) n . Kami memiliki n / 2> 2 sejak n> 4 , jadi setidaknya ada tiga pembagi dalam [2, 4n) .
Jika n = 9 , maka (n + n% 6 - 3) n = 9 (9 + 3 - 3) = 81 memiliki tiga pembagi ( 3 , 9 , dan 21 ) dalam [2, 36) .
Jika n> 9 adalah kelipatan dari 3 , maka 3 , n / 3 , dan n semua membagi n dan, karenanya, (n + n% 6 - 3) n . Kami memiliki n / 3> 3 sejak n> 9 , jadi setidaknya ada tiga pembagi dalam [2, 4n) .
Akhirnya, jika n = 6k ± 1> 4 bukan prime kembar, baik n atau m: = n + n% 6 - 3 harus komposit dan, oleh karena itu, akui pembagi yang tepat d> 1 .
Karena n = m + 2 atau m = n + 2 dan n, m> 4 , bilangan bulat d , m , dan n adalah pembagi yang berbeda dari mn . Selanjutnya, m <n + 3 <4n sejak n> 1 , jadi mn memiliki setidaknya tiga pembagi dalam [2, 4n) .