이전 질문에서 다음과 같이 , 나는 레크리에이션 수학의 문제로 리만 가설 을 가지고 놀았습니다 . 그 과정에서 나는 다소 흥미로운 재발에 이르렀고, 그 이름, 축소 및 소수 사이의 갭의 해결 가능성에 대한 다루기 쉬움에 대해 궁금합니다.
간결하게 말해서, 각 소수 사이 의 간격 을 이전 후보 소수 의 반복으로 정의 할 수 있습니다 . 예를 들어, 의 기본에 대한 다음 소수는 다음과 같습니다.
또는, 우리가 보는 바와 같이 이 밖으로 음모를 꾸미고 : .
각 후보 프라임 반복 평가 를 통해 프라임에 대한 프로세스를 반복 할 수 있습니다 . 다음 프라임 p_2 를 얻고 싶다고 가정 해보십시오 . 후보 기능은 다음과 같습니다.
어디:
위와 같이 \ qquad \ displaystyle f_ {p_1} (x) =-\ cos (2 \ pi (x + 1) / p_0) + 1
각 구성 요소 함수는 정수 값에서만 0이된다는 것을 쉽게 알 수 있으며 삼각법 시스템의 맥락에서 덧셈과 곱셈의 속성을 활용하여 이것이 AND 및 XOR 모양의 관계를 영리하게 캡처하는 방법을 보여주는 것도 쉽습니다. 방정식.
재발은 다음과 같습니다.
... 모든 문제 는 다항식 시간으로이 함수에 대해 연산자를 평가할 수 있는지 여부에 달려 있습니다 . 이것은 실제로 에라토스테네스 체의 일반화입니다 .
재발을 보여주기 위해 파이썬 코드 작업하기 :
from math import cos,pi
def cosProduct(x,p):
""" Handles the cosine product in a handy single function """
ret = 1.0
for k in xrange(2,p+1):
ret *= -cos(2*pi*(x+k-1)/p)+1.0
return ret
def nthPrime(n):
""" Generates the nth prime, where n is a zero-based integer """
# Preconditions: n must be an integer greater than -1
if not isinstance(n,int) or n < 0:
raise ValueError("n must be an integer greater than -1")
# Base case: the 0th prime is 2, 0th function vacuous
if n == 0:
return 2,lambda x: 0
# Get the preceding evaluation
p_nMinusOne,fn_nMinusOne = nthPrime(n-1)
# Define the function for the Nth prime
fn_n = lambda x: fn_nMinusOne(x) + cosProduct(x,p_nMinusOne)
# Evaluate it (I need a solver here if it's tractable!)
for k in xrange(p_nMinusOne+1,int(p_nMinusOne**2.718281828)):
if fn_n(k) == 0:
p_n = k
break
# Return the Nth prime and its function
return p_n,fn_n
간단한 예 :
>>> [nthPrime(i)[0] for i in range(20)]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
문제는 수학적으로나 컴퓨터 과학자로 머리를 숙이고 있다는 것입니다. 특히, 내가 가진 능력이 아니다 푸리에 분석 정의와 함께, 균일 한 커버를 하거나 함께 복소 평면 일반적으로, 나는이 방법 중 하나를 평면 밖으로 걱정하고있어 잘못 하거나 숨 깁니다은 3SAT 문제의 숨어있는 공포 그 이르게을에 NP- 완전성.
따라서 여기에 세 가지 질문이 있습니다.
- 위의 간결한 반복이 주어지면 다항식 시간과 공간에서 0의 위치를 결정적으로 계산하거나 추정 할 수 있습니까?
- 그렇다면 그렇지 않으면 폴리 타임 또는 폴리 스페이스 솔루션을 다루기 어려운 다른 하위 문제를 숨기고 있습니까?
- 그리고 기적 (1)과 (2)에 의해이 재발을 만족시키기 위해 어떤 역동적 인 프로그래밍 개선이 이루어 졌습니까? 분명히 여러 함수를 통해 동일한 정수를 반복하는 것은 우아하지 않으며 매우 낭비입니다.