Python(965个字符)
因为我的问题是没有爱。我正在用Python发布我的(非代码查询)解决方案:
def numCollatzSteps(n):
numSteps=0
while n>1:
if n%2==0:
n//=2
else:
n=3*n+1
numSteps+=1
return numSteps
def findNonHaltingN():
for n in count(1):
if not h1(numCollatzSteps,n):
return n
print "The Collatz Conjecture is "+str(not h2(findNonHaltingN))
def isPrime(n):
for i in range(2,n):
if n%i==0:
return False
else:
return True
def isSumOf2Primes(n):
for i in range(2,n-2):
if isPrime(i) and isPrime(n-i):
return True
else:
return False
def findNonSum():
for i in count(4,2):
if not isSumOf2Primes(i):
return i
print "Goldbach's Conjecture is "+str(not h1(findNonSum))
def isSmallTwinPrime(n):
return isPrime(n) and isPrime(n+2)
def nextSmallTwinPrime(n):
for i in count(n):
if isSmallTwinPrime(i):
return i
def largestTwinPrimes():
for n in count(2):
if not h1(nextSmallTwinPrime,n):
return n-1,n+1
print "The Twin Primes Conjecture is "+str(not h2(largestTwinPrimes))
这很简单。
numCollatzSteps(n)表示特定n的Collatz序列需要执行多少步。如果所说的Collatz序列不终止,它将无限地运行。
findNonHaltingN()向上计数,以检查numCollatzSteps是否每隔n个终止。当且仅当存在一个numCollatzSteps不终止的n时,findNonHaltingN终止。
因此,我们可以通过检查findNonHaltingN()不停止来检查Collatz猜想是否为真
isPrime(n)通过查看从1到n-1的正整数是否除以该数来检查数字是否为质数
isSumOf2Primes(n)迭代2到n-2之间的所有正整数,并检查至少一个为素数及其补码
findNonSum()从4开始向上计数偶数,直到达到第一个不是2个质数之和的数字,然后将其返回。如果没有这样的数字,它将无限地继续。
通过查看findNonSum不会停止,我们可以检查Goldbach的猜想是否成立。
当且仅当n和n + 2均为素数时,isSmallTwinPrime(n)返回true
nextSmallTwinPrime(n)返回isSmallTwinPrime为true的下一个数字> = n
maximumTwinPrimes()从2开始向上计数,以检查nextSmallTwinPrime对所有n都停止。如果nextSmallTwinPrime从未停止过大约n个,则得出最大的孪生素数是n-1和n + 1,我们就停在那里
然后我们可以通过检查maximumTwinPrimes永不停止来检查双素数猜想的有效性。