lambda n:sum((n+n%6-3)*n%k<1for k in range(2,4*n))==2
Provalo online!
sfondo
Tutti i numeri interi assumono una delle seguenti forme, con numero intero k : 6k - 3 , 6k - 2 , 6k - 1 , 6k , 6k + 1 , 6k + 2 .
Poiché 6k - 2 , 6k e 6k + 2 sono tutti pari, e poiché 6k - 3 è divisibile per 3 , tutti i numeri primi tranne 2 e 3 devono essere della forma 6k - 1 o 6k + 1 . Poiché la differenza di una prima coppia gemella è 2 , ad eccezione di (3, 5) , tutte le coppie gemelle prime sono della forma (6k - 1, 6k + 1) .
Sia n nella forma 6k ± 1 .
Se n = 6k -1 , allora n + n% 6 - 3 = 6k - 1 + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 .
Se n = 6k + 1 , allora n + n% 6 - 3 = 6k + 1 + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1 .
Pertanto, se n fa parte di una doppia coppia gemella e n ≠ 3 , il suo gemello sarà n + n% 6 - 3 .
Come funziona
Python non ha un test di primalità integrato. Mentre ci sono modi brevi per testare un singolo numero per la primalità, farlo per due numeri sarebbe lungo. Lavoreremo invece con i divisori.
sum((n+n%6-3)*n%k<1for k in range(2,4*n))
conta quanti numeri interi k nell'intervallo [2, 4n) si dividono (n + n% 6 - 3) n in modo uniforme, ovvero conta il numero di divisori di (n + n% 6 - 3) n nell'intervallo [2 , 4n) . Sosteniamo che questo conteggio è 2 se e solo se n fa parte di una doppia coppia gemella.
Se n = 3 (un primo gemello), (n + n% 6 - 3) n = 3 (3 + 3 - 3) = 9 ha due divisori ( 3 e 9 ) in [2, 12) .
Se n> 3 è un numero primo gemello, come visto prima, m: = n + n% 6 - 3 è il suo gemello. In questo caso, mn ha esattamente quattro divisori: 1, m, n, mn .
Dato che n> 3 , abbiamo m> 4 , quindi 4n <mn ed esattamente due divisori ( m e n ) rientrano nell'intervallo [2, 4n) .
Se n = 1 , allora (n + n% 6 - 3) n = 1 + 1 - 3 = -1 non ha divisori in [2, 4) .
Se n = 2 , allora (n + n% 6 - 3) n = 2 (2 + 2 - 3) = 2 ha un divisore (stesso) in [2, 8) .
Se n = 4 , allora (n + n% 6 - 3) n = 4 (4 + 4 - 3) = 20 ha quattro divisori ( 2 , 4 , 5 e 10 ) in [2, 16) .
Se n> 4 è pari, 2 , n / 2 e n tutti dividono n e, quindi, (n + n% 6 - 3) n . Abbiamo n / 2> 2 da n> 4 , quindi ci sono almeno tre divisori in [2, 4n) .
Se n = 9 , quindi (n + n% 6 - 3) n = 9 (9 + 3 - 3) = 81 ha tre divisori ( 3 , 9 e 21 ) in [2, 36) .
Se n> 9 è un multiplo di 3 , quindi 3 , n / 3 e n tutti dividono n e, quindi, (n + n% 6 - 3) n . Abbiamo n / 3> 3 da n> 9 , quindi ci sono almeno tre divisori in [2, 4n) .
Infine, se n = 6k ± 1> 4 non è un numero primo gemello, n o m: = n + n% 6 - 3 deve essere composto e, quindi, ammettere un divisore appropriato d> 1 .
Poiché n = m + 2 o m = n + 2 e n, m> 4 , gli interi d , m e n sono divisori distinti di mn . Inoltre, m <n + 3 <4n da n> 1 , quindi mn ha almeno tre divisori in [2, 4n) .