lambda n:sum((n+n%6-3)*n%k<1for k in range(2,4*n))==2
Essayez-le en ligne!
Contexte
Tous les entiers prennent l'une des formes suivantes, avec un entier k : 6k - 3 , 6k - 2 , 6k - 1 , 6k , 6k + 1 , 6k + 2 .
Puisque 6k - 2 , 6k et 6k + 2 sont tous pairs, et puisque 6k - 3 est divisible par 3 , tous les nombres premiers sauf 2 et 3 doivent être de la forme 6k - 1 ou 6k + 1 . Étant donné que la différence d'une paire prime jumelle est de 2 , à l'exception de (3, 5) , toutes les paires prime jumelles sont de la forme (6k - 1, 6k + 1) .
Soit n la forme 6k ± 1 .
Si n = 6k -1 , alors n + n% 6 - 3 = 6k - 1 + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 .
Si n = 6k + 1 , alors n + n% 6 - 3 = 6k + 1 + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1 .
Ainsi, si n fait partie d'une paire principale jumelle et n ≠ 3 , son jumeau sera n + n% 6 - 3 .
Comment ça marche
Python n'a pas de test de primalité intégré. Bien qu'il existe des moyens courts de tester la primalité d'un seul nombre, le faire pour deux nombres serait long. Nous allons plutôt travailler avec des diviseurs.
sum((n+n%6-3)*n%k<1for k in range(2,4*n))
compte le nombre d'entiers k dans l'intervalle [2, 4n) divise (n + n% 6 - 3) n uniformément, c'est-à-dire qu'il compte le nombre de diviseurs de (n + n% 6 - 3) n dans l'intervalle [2 , 4n) . Nous affirmons que ce nombre est de 2 si et seulement si n fait partie d'une paire principale jumelle.
Si n = 3 (un nombre premier jumeau), (n + n% 6 - 3) n = 3 (3 + 3 - 3) = 9 a deux diviseurs ( 3 et 9 ) dans [2, 12) .
Si n> 3 est un nombre premier jumeau, comme vu précédemment, m: = n + n% 6 - 3 est son jumeau. Dans ce cas, mn a exactement quatre diviseurs: 1, m, n, mn .
Puisque n> 3 , nous avons m> 4 , donc 4n <mn et exactement deux diviseurs ( m et n ) tombent dans l'intervalle [2, 4n) .
Si n = 1 , alors (n + n% 6 - 3) n = 1 + 1 - 3 = -1 n'a pas de diviseurs dans [2, 4) .
Si n = 2 , alors (n + n% 6 - 3) n = 2 (2 + 2 - 3) = 2 a un diviseur (lui-même) dans [2, 8) .
Si n = 4 , alors (n + n% 6 - 3) n = 4 (4 + 4 - 3) = 20 a quatre diviseurs ( 2 , 4 , 5 et 10 ) dans [2, 16) .
Si n> 4 est pair, 2 , n / 2 et n divisent tous n et, par conséquent, (n + n% 6 - 3) n . Nous avons n / 2> 2 puisque n> 4 , il y a donc au moins trois diviseurs dans [2, 4n) .
Si n = 9 , alors (n + n% 6 - 3) n = 9 (9 + 3 - 3) = 81 a trois diviseurs ( 3 , 9 et 21 ) dans [2, 36) .
Si n> 9 est un multiple de 3 , alors 3 , n / 3 et n divisent tous n et, par conséquent, (n + n% 6 - 3) n . Nous avons n / 3> 3 depuis n> 9 , il y a donc au moins trois diviseurs dans [2, 4n) .
Enfin, si n = 6k ± 1> 4 n'est pas un nombre premier jumeau, n ou m: = n + n% 6 - 3 doit être composite et, par conséquent, admettre un diviseur approprié d> 1 .
Puisque n = m + 2 ou m = n + 2 et n, m> 4 , les entiers d , m et n sont des diviseurs distincts de mn . De plus, m <n + 3 <4n depuis n> 1 , donc mn a au moins trois diviseurs dans [2, 4n) .