lambda n:sum((n+n%6-3)*n%k<1for k in range(2,4*n))==2
온라인으로 사용해보십시오!
배경
모든 정수는 정수 k : 6k-3 , 6k-2 , 6k-1 , 6k , 6k + 1 , 6k + 2 의 다음 형식 중 하나를 사용합니다 .
이후 6K - 2 , 6K 및 6K + 2 는 모두 심지어 이후있는 3 - 6K 로 나누어 3 를 제외한 모든 소수, 2 및 3 형태이어야 6K - 1 또는 6K + 1 . 트윈 소수 쌍의 차이는 2 이므로 (3, 5)를 제외 하고 모든 트윈 소수 쌍은 (6k-1, 6k + 1) 형식 입니다.
하자 N 의 형식이 될 6K ± 1 .
만약 N = -1 6K 다음 N + N 6 % - 3 = 6K - 1 + (6K - 1) 6 % - 3 = 6K - + 5 1 - 3 = 1 + 6K .
만약 N = + 6K 한 후 , N + N 6 % - 3 = 6K + 1 + (1 + 6K) 6 % - 3 = 6K + 1 + 1 - 3 = 6K - 1 .
따라서, 경우 n은 트윈 주요 쌍의 일부 N ≠ 3 , 그것의 쌍둥이가 될 것입니다 N + N % 6-3 .
작동 원리
파이썬에는 내장 테스트가 없습니다. 단일 숫자에 대해 소수를 테스트하는 방법은 짧지 만 두 숫자에 대해서는 그렇게하는 데 시간이 오래 걸립니다. 대신 제수와 함께 작업 할 것입니다.
sum((n+n%6-3)*n%k<1for k in range(2,4*n))
구간 [2, 4n) 나누기 (n + n % 6-3) n 에서 정수 k 의 개수를 균등하게 계산합니다. 즉, 간격 [2 에서 (n + n % 6-3) n 의 제수를 계산합니다. , 4n) . 우리는 n 이 트윈 소수 쌍의 일부인 경우에만 이 개수가 2 라고 주장합니다 .
만약 N = 3 (a 쌍둥이 소수), (N + N 6 % - 3) N = 3 (3 + 3 - 3) = 9 개의 제수 (갖는 3 및 9 에서) [2, 12) .
경우 N> 3 , 앞서 본 바와 같이, 트윈 프라임이고 m = N + N % (6) - (3) 의 쌍이다. 이 경우 mn 에는 정확히 4 개의 제수가 있습니다 : 1, m, n, mn .
이후 N> 3 , 우리가 m> 4 , 그래서 4N <MN 정확히 두 제수 ( m 및 n은 간격으로) 가을 [2 4N) .
만약 N = 1 이어서, (N + N 6 % - 3) = N + 1 1 - 3 = -1 에는 제수 없다 [2, 4) .
만약 N = 2 , 그 다음 (N + N 6 % - 3) N = 2 (2 + 2 - 3) = 2가 하나 개의 제수 (자체)를 갖는다 [2, 8) .
만약 N = 4 , 다음 (N + N 6 % - 3) N = 4 (4 + 4 - 3) = 20이 네 제수 (갖는 2 , 4 , 5 및 10 에서) [2, 16) .
경우 N> 4 짝수 인 2 , N / 2 , 및 N 모든 분할 N , 따라서, N - (N + 3, N 6 %) . 우리는 n > 4 이기 때문에 n / 2> 2가 있으므로 [2, 4n) 에는 적어도 3 개의 제수가 있습니다.
n = 9 인 경우 , [2, 36) 에서 (n + n % 6--3) n = 9 (9 + 3-3 ) = 81 은 세 개의 제수 ( 3 , 9 및 21 )를 갖습니다 .
경우 N> (9) 의 배수 (3) 다음, 3 , N / 3 , 및 N 모든 분할 N , 따라서, 및 N - (3 ~ 6 %, N + N) . 우리는이 N / 3> 3 이후 N> 9 , 그래서 적어도 세 제수있다 [2, 4N)은 .
마지막으로, n = 6k ± 1> 4 가 쌍소 수가 아닌 경우 n 또는 m : = n + n % 6-3은 복합이어야하므로 적절한 제수 d> 1을 인정해야합니다 .
어느 이후 N = m + 2 또는 m = N + 2 및 n은 m> 4 의 정수 거라고 , m을 , 그리고 N 있는 별개 의 제수 MN . 또한, n> 1 이후 m <n + 3 <4n 이므로 , mn 은 [2, 4n) 에서 3 개 이상의 제수를 갖습니다 .