def sieve_of_eratosthenes(n):
"""
使用埃拉托斯特尼筛法找出小于等于n的所有质数
"""
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for num in range(2, int(n ** 0.5) + 1):
if is_prime[num]:
for multiple in range(num * num, n + 1, num):
is_prime[multiple] = False
prime_numbers = []
for num in range(2, n + 1):
if is_prime[num]:
prime_numbers.append(num)
return prime_numbers
def check_1_plus_1_for_even_number(even_number):
primes = sieve_of_eratosthenes(even_number)
for prime in primes:
p1 = even_number - prime
if p1 in primes:
print(f"{even_number} 可以表示为 {prime} + {p1}")
return True
print(f"{even_number} 暂时未找到符合1+1的表示形式")
return False
# 示例,验证几个偶数
even_numbers = [10, 14, 36, 66, 9000, 10086]
for num in even_numbers:
check_1_plus_1_for_even_number(num)
# 以上是传统筛法
# 以下为我的陈氏筛法,哈哈哈哈
# 作者:陈墨仙
def func_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def sieve_of_chenmoxian(n):
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
p1 = p2 = None
for num in range(2, int(n ** 0.5) + 1):
if is_prime[num]:
for multiple in range(num * num, n + 1, num):
is_prime[multiple] = False
p1 = num
p2 = n - num
if func_prime(p2):
return p1, p2
return p1, p2
# 示例,验证几个偶数
even_numbers = [10, 14, 36, 66, 9000, 1086, 10086]
for num in even_numbers:
p1, p2 = sieve_of_chenmoxian(num)
print(f"{num} 可以表示为 {p1} + {p2}")
# 现在是正向推导。
# 因为从1数到足够大的偶数,一定会遇到一个质数(因为最小的质数为2,则从1数到比2大的偶数一定会遇到质数),假设偶数为n,遇到的第一个质数
# 为p1,另一个数则为n-p1=p2。我们假设从遇到的第一个质数(2)开始所有质数为p1,n减去他们得到的另一个数为p2。
# 也就是说所有p2如果是合数,在(2, int(p2 ** 0.5) + 1)范围,都有一个值使得p2对他取模为0。也就是说所有p2都可以拆解成p3*p4,
# p3p4中一定有一个数大于(p2**0.5),当p3*p4小等于n*0.5时,这里p1和p2因为是相对于n互补,所以一定有一个大等于n*0.5一个小等于n*0.5
# 如果p3*p4一定是合数,假设p4>p3,那么p3一定>=2,如果p3在某种情况下只能等于1,则说明p3是质数。
# 如果p4>p3>=2,那么p4>(p2**0.5),p3<(p2**0.5)。这是合数情况。
# p3*p4>=p4*2。(p3*p4)**2 > p4*2*((p3*p4)**0.5)。也就是p3**1.5*p4**0.5>2
# 我们假设p2=p3*p4, p1=p5*p6。且p3<p4,p5<p6,那么p4>p3>=2,p6>p5>=2。p1+p2=p4*p3+p6*p5>=p4*2+p6*2>(p1**0.5)*2+(p2**0.5)*2
# 以上是合数情况。如果当p1p2为质数时,p1+p2=p4*p3+p6*p5=p4*1+p6*1>(p1**0.5)+(p2**0.5) 因为质数无法被分解,且p1=p4*p3,p4>p3那么p3只可能为1,所以这里p1=p4,同理p2=p6
# 我们构建f(n) = (p1**0.5)*2+(p2**0.5)*2 - n g(n)=(p1**0.5)+(p2**0.5) - n, 其中n=p1+p2。f(n)为有合数的情况,g(n)为全是质数的情况。
# 根据上述不等式可知,全是质数且满足质数和等于n时,g(n)一定是负数。
# 通过利用均值不等式以及求导等,当n足够大时(趋向于无穷大),g(n)为负数。也就是说n=p1+p2趋向无穷大时,n > (p1**0.5)+(p2**0.5)成立。
# 也就是说n足够大时,p1分解为p4*p3(p3=1),p2为p6*p5(p5=1),他是满足(p1**0.5)+(p2**0.5)<n的,所以偶数可以分解为二个质数的和。
'''
以下为整合后的推导过程。公式为latex代码。
一、 明确假设与基础设定
对于任意给定的偶数\(n\gt2\),假设存在一种情况,使得从最小质数\(2\)开始,依次取质数\(p_i\),\(n - p_i\)均为合数。设遇到的第一个质数为\(p_1\),则\(p_2 = n - p_1\)。
二、 合数性质推导
1. 合数分解:
若\(p_2\)是合数,根据合数性质,在\((2, \lfloor p_2^{0.5}\rfloor + 1)\)范围内,必然存在一个值\(m\)使得\(p_2\)对\(m\)取模为\(0\),即\(p_2\)可拆解成\(p_3\times p_4\) 。在\(p_3\)和\(p_4\)中,一定有一个数大于\(p_2^{0.5}\),不妨设\(p_4\gt p_2^{0.5}\),\(p_3\lt p_2^{0.5}\)。
2. 取值范围与不等式推导:
假设\(p_4\gt p_3\geq2\) ,那么\(p_3\times p_4\geq2p_4\)。
对\((p_3\times p_4)^2\)与\(2p_4\times(p_3\times p_4)^{0.5}\)进行比较,设\(x = p_3\times p_4\),则比较\(x^2\)与\(2x^{1.5}\)。
当\(x\gt0\)时,两边同时除以\(x^{1.5}\)得到\(x^{0.5}\gt2\),即\(p_3^{0.5}p_4^{0.5}\gt2\),进一步得到\(p_3^{1.5}p_4^{0.5}\gt2p_3\geq4\)。
3. 多个变量关系推导:
假设\(p_2 = p_3\times p_4\),\(p_1 = p_5\times p_6\),且\(p_3\lt p_4\),\(p_5\lt p_6\),那么\(p_4\gt p_3\geq2\),\(p_6\gt p_5\geq2\)。
此时\(p_1 + p_2 = p_4\times p_3 + p_6\times p_5\)。
因为\(p_3\geq2\),\(p_5\geq2\),根据不等式性质,将\(p_3\)和\(p_5\)分别用其最小值\(2\)替换,可得\(p_1 + p_2\geq p_4\times2 + p_6\times2\)。
4. 引入均值不等式:
设\(a = p_4\),\(b = p_6\),对于正数\(a\)、\(b\),由均值不等式\(a + b\gt2\sqrt{ab}\) 。
令\(p_1 = a^2\),\(p_2 = b^2\),则\(p_4\times2 + p_6\times2 = 2a + 2b\),\((p_1^{0.5})\times2 + (p_2^{0.5})\times2 = 2\sqrt{a^2}+2\sqrt{b^2}=2a + 2b\)。
由于\(a + b\gt2\sqrt{ab}\),两边同时乘以\(2\)得到\(2a + 2b\gt4\sqrt{ab}\)。
而\(4\sqrt{ab}\geq (p_1^{0.5})\times2 + (p_2^{0.5})\times2\),所以\(p_1 + p_2\geq p_4\times2 + p_6\times2\gt (p_1^{0.5})\times2 + (p_2^{0.5})\times2\)。
三、 质数情况推导
1. 质数分解唯一性论证:
当\(p_1\)和\(p_2\)为质数时,已知\(p_1 = p_4\times p_3\) 。因为质数除了\(1\)和它自身外,不能被其他自然数整除。
若\(p_3\gt1\)且\(p_3\neq p_1\),那么\(p_1\)就存在除了\(1\)和\(p_1\)之外的因数\(p_3\)和\(p_4\),这与\(p_1\)是质数的定义矛盾。
所以,在\(p_1 = p_4\times p_3\)且\(p_4\gt p_3\)的条件下,\(p_3\)只能为\(1\),从而得出\(p_1 = p_4\)。同理可证,若\(p_2 = p_6\times p_5\)且\(p_6\gt p_5\),则\(p_5 = 1\),\(p_2 = p_6\)。
2. 构建函数及分析:
构建函数\(g(n)=(\sqrt{p_1})+(\sqrt{p_2}) - n\),其中\(n = p_1 + p_2\)。
当\(p_1\)和\(p_2\)为质数时,由前面推导可得\(p_1 + p_2\gt (\sqrt{p_1})+(\sqrt{p_2})\),即\(g(n)\lt0\)。
对于\(n\)足够大的情况,我们进一步分析函数\(g(n)\)。
利用均值不等式\(\sqrt{p_1}+\sqrt{p_2}\leq2\sqrt{\frac{p_1 + p_2}{2}}\),设\(x = p_1 + p_2 = n\),则\(g(n)=\sqrt{p_1}+\sqrt{p_2}-n\leq2\sqrt{\frac{n}{2}}-n=\sqrt{2n}-n\)。
令\(h(n)=\sqrt{2n}-n\),对\(h(n)\)求导,\(h^\prime(n)=\frac{\sqrt{2}}{2\sqrt{n}} - 1\)。
当\(n\)足够大时,存在\(N\),当\(n\gt N\)时,\(h^\prime(n)\lt0\),即\(h(n)\)单调递减。
又因为\(h(2)=0\),所以当\(n\gt2\)时,\(h(n)\lt0\),从而\(g(n)\lt0\),即\(n\gt (\sqrt{p_1})+(\sqrt{p_2})\)。
四、 矛盾推导与结论
1. 反证矛盾分析:
根据我们最初的假设,对于所有从\(2\)开始的质数\(p_i\),\(n - p_i\)均为合数。
但在前面合数情况推导中,我们得出了一系列关于\(p_1\)、\(p_2\)、\(p_3\)、\(p_4\)、\(p_5\)、\(p_6\)等数的关系和不等式,并且在质数情况推导中,函数\(g(n)\)的性质与假设产生了矛盾。
在假设所有\(n - p_i\)为合数的情况下,我们推导出的数的大小关系和函数性质无法自洽。
2. 结论推导:
因为假设导致了矛盾,所以原假设不成立。即不存在一个足够大的偶数\(n\),使得从\(2\)开始,所有\(n - p_i\)都为合数。
这就意味着对于任意足够大的偶数\(n\),至少存在一对质数\(p_1\)和\(p_2\),使得\(n = p_1 + p_2\),从而证明了哥德巴赫猜想。
'''
有点紧张,我不知道我对不对。