前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >漫画:什么是 哥德巴赫猜想?

漫画:什么是 哥德巴赫猜想?

作者头像
小灰
发布于 2020-04-22 08:52:28
发布于 2020-04-22 08:52:28
6570
举报
文章被收录于专栏:程序员小灰程序员小灰

故事发生在小灰上小学的时候,

有一天小灰向他的小学老师请教问题......

————————————

哥德巴赫猜想的起源

说起哥德巴赫猜想的起源,就不得不提到两个人,其中一位是业余数学家哥德巴赫,另一位是著名的大数学家欧拉

首先让我们来回顾一下素数的含义:

所谓素数,就是除了1和它本身以外,无法被其他自然数所整除的数。比如 2,3,5,7,11,13,17,19......

话说有一天,哥德巴赫同学脑洞大开,发现有许多正整数都可以写成三个素数之和。

什么意思呢?让我们看几个例子:

整数9,可以写成 2+2+5

整数16,可以写成 2+7+7

整数30,可以写成2+11+17

那么,如何能证明,任何一个大于5的整数都可以写成三个素数之和?

哥德巴赫自己也想不出来,于是他写信询问他的朋友欧拉。

欧拉把哥德巴赫的命题做了如下转化:

任何一个大于2的偶数,都可以写成两个素数之和。

这又是什么意思呢?让我们再看几个例子:

偶数6,可以写成 3 + 3

偶数18,可以写成 5 + 13

偶数24,可以写成 5 + 19

“任何一个大于5的整数,都可以写成三个素数之和。”

“任何一个大于2的偶数,都可以写成两个素数之和。”

为什么说这两个命题等价呢?

简单地解释,把所有写成两素数之和的偶数再加上2或3,就可以表示一切大于5的正整数:

这样一个等价版本的命题,就成为了后世著名的哥德巴赫猜想

什么是殆素数 ?

所谓殆素数,是指素数因子的个数不超过某一固定常数的正整数。

比如 15=3×5,有2个素数因子,我们可以说整数15是素数因子数量不超过2的殆素数。

再比如 45 = 3×3×5,有3个素数因子,我们可以说整数45是素数因子数量不超过3的殆素数。

而真正的素数,本身就只有1个素数因子。

想要一步到位证明哥德巴赫猜想,即“任何一大于2的偶数都可以写成两个素数之和”,恐怕并不太容易。那么我们不妨降低要求,首先证明任何一个大于2的偶数都可以写成两个殆素数之和,再一步一步向最终目标推进。

功夫不负有心人,1920年,有人成功证明了任何一个大于2的偶数都可以写成两个 “素数因子数量不超过9” 的殆素数之和,这个成果被简称为 “9+9”

很快,更多的 “捷报” 陆续诞生:

1924年,“7 + 7” 被成功证明,即任何一个大于2的偶数都可以写成两个“素数因子数量不超过7” 的殆素数之和。

1932年,“6 + 6” 被成功证明。

1937年,“5 + 7”、“4 + 9” 被成功证明。

1938年,“5 + 5” 被成功证明。

1940年,“4 + 4” 被成功证明。

1956年,“3 + 4”、“3 + 3”、“2 + 3” 被成功证明。

1962年,“1 + 5”、 “1 + 4” 被成功证明。

1965年,“1 + 3” 被成功证明。

1966年,“1 + 2” 被成功证明,这一次的功臣是我国的著名数学家陈景润先生。

用最直白的语言来描述,陈景润证明了任何一个大于2的偶数都可以写成(素数A+素数B×素数C)或(素数A+素数B)的形式。

(在公众号后台回复 论文 两个字,可查看陈景润证明“1+2”的论文)

此时,关于哥德巴赫猜想的研究进展距离最终目标只有一步之遥!

而这个问题的终点,“任何一大于2的偶数都可以写成两个素数之和”,就是传说中的 “1+1”

因此,这里的“1+1”指的是两个素数之和,千万不要把它理解成字面上的1+1=2,不然就丢人现眼了!

哥德巴赫猜想的未来

既然陈景润先生已经成功证明了 “1+2”,那么最终证明 “1+1” 岂不是手到擒来了?

很遗憾,一直到50多年后的今天,哥德巴赫猜想的终点 “1+1” 还是没有得到成功证明。

时至今日,有许许多多的 “民间数学家” 花费大量精力试图证明哥德巴赫猜想,他们对于数学世界的探索精神很值得赞赏。但是,由于缺乏起码的数学功底,他们的证明往往从根儿上就是错误的。

但是话说回来,我们也期望着有朝一日,哥德巴赫猜想能够被某个绝世的数学天才成功证明。

—————END—————

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小灰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flock分析与文件权限问题
贴一个试验代码, 子进程直接获取锁, 若获取不到则输出错误; 父进程睡3秒后退出.
平凡的学生族
2021/03/04
9170
linux C语言实现文件锁
flock函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。 表头文件 #include<sys/file.h> 定义函数 int flock(int fd,int operation); 参数 operation有下列四种情况: LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。 LOCK_EX 建立互斥锁定。一个文件同时只有一
一灰灰blog
2018/02/06
8.7K0
Linux 中 fcntl()、lockf、flock 的区别
这三个函数的作用都是给文件加锁,那它们有什么区别呢?首先flock和fcntl是系统调用,而lockf是库函数。lockf实际上是fcntl的封装,所以lockf和fcntl的底层实现是一样的,对文件加锁的效果也是一样的。后面分析不同点时大多数情况是将fcntl和lockf放在一起的。下面首先看每个函数的使用,从使用的方式和效果来看各个函数的区别。 1. flock 函数原型 int flock(int fd, int operation); // Apply or remove an advisory
小小科
2018/05/04
6.3K1
Linux 中 fcntl()、lockf、flock 的区别
python的文件锁使用
python的文件锁目前使用的是fcntl这个库,它实际上为 Unix上的ioctl,flock和fcntl 函数提供了一个接口。
py3study
2020/01/07
5.8K0
嵌入式Linux:文件锁
Linux 文件锁是一种用于管理多进程或多线程环境中资源访问的机制,确保只有一个进程或线程在特定时间内对文件进行操作,从而避免数据不一致的情况。
不脱发的程序猿
2025/04/01
1150
嵌入式Linux:文件锁
并发锁(二):共享锁和独占锁
共享锁用于某个文件不会被写,或者不会被更新(也就是只读)的情况,加了共享锁的文件,只能再加共享锁,而不能加独占锁
仙士可
2019/12/18
1.7K0
PHP基于文件锁解决多进程同时读写一个文件问题示例
/【一个开发人员,能懂服务器量好,反之一个服务器维护人员,也应该懂开发】/ 本文实例讲述了PHP基于文件锁解决多进程同时读写一个文件问题。分享给大家供大家参考,具体如下: 首先PHP是支持进程的而不支持多线程(这个先搞清楚了),如果是对于文件操作,其实你只需要给文件加锁就能解决,不需要其它操作,PHP的flock已经帮你搞定了。 用flock在写文件前先锁上,等写完后解锁,这样就实现了多线程同时读写一个文件避免冲突。大概就是下面这个流程
用户2323866
2021/07/06
5110
golang下文件锁的使用[通俗易懂]
题目是golang下文件锁的使用,但本文的目的其实是通过golang下的文件锁的使用方法,来一窥文件锁背后的机制。
全栈程序员站长
2022/09/13
2.6K0
Linux中如何对文件加锁
在Linux中,文件加锁是通过使用文件锁(File Locks)来实现的。文件锁主要有两种类型:共享锁(Shared Lock)和排他锁(Exclusive Lock)。这些锁用于控制对文件的并发访问,以防止多个进程同时对同一文件进行读或写操作,从而保护文件的一致性。
Linux兵工厂
2024/02/27
6420
Linux中如何对文件加锁
脚本并发问题:脚本并发执行时出现竞争条件,导致问题
在 Python 中,可以使用 threading.Semaphore 或 multiprocessing.Semaphore 实现信号量:
是山河呀
2025/02/07
1250
PHP 高级编程之多线程
PHP 高级编程之多线程 http://netkiller.github.io/journal/php.thread.html ---- 目录 1. 多线程环境安装 1.1. PHP 5.5.9 1.2. 安装 pthreads 扩展 2. Thread 3. Worker 与 Stackable 4. 互斥锁 4.1. 多线程与共享内存 5. 线程同步 6. 线程池 6.1. 线程池 6.2. 动态队列线程池 6.3. pthreads Pool类 7. 多线程文件安全读写(文件锁) 8. 多线程与数据连
netkiller old
2018/03/05
2.8K0
PHP文件锁
食堂管理员A有点偷懒,不想等那么久,于是就告诉大家,中午都可以来食堂吃饭,但是要跑快点才行,只有一个座位,第一个到的人就可以在食堂吃饭,然后就会锁门,其他人看到门锁上了就哪来的回哪去吧,这就是非阻塞型文件锁;
全栈程序员站长
2022/09/13
2.2K0
PHP文件锁
Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile
在 Linux 系统中,文件锁定是一种对文件进行保护的方法,可以防止多个进程同时访问同一个文件,从而导致数据损坏或者冲突。文件锁定命令是一组用于在 Linux 系统中实现文件锁定操作的命令,它们可以用于对文件进行加锁或解锁,控制文件的访问权限,保证系统的稳定性和安全性。在本文中,我们将详细介绍 Linux 中的文件锁定命令,包括锁定的类型、命令的使用方法、常见问题及解决方法等内容。
网络技术联盟站
2023/05/08
4K0
Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile
PHP文件锁封装备份代码
高久峰
2023/06/03
3510
Linux同步机制(二) - 条件变量,信号量,文件锁,栅栏
1 条件变量 条件变量是一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。 1.1 相关函数  #include <pthread.h>  pthread_cond_t cond = PTHREAD_COND_INITIALIZER;  int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t*cond_attr);  int pthread_cond_signal(pthread_cond_t *cond);  int
三丰SanFeng
2018/01/16
3K0
flock()函数使用示例
注:在进程退后,会自动解锁。 #include <stdio.h> #include <stdlib.h> #include <sys/file.h> // 提供flock()函数,从#include可以看出,它是一个系统调用,而不是一个库函数 #include <unistd.h> // 编译方法: // 假设文件名为x.cpp,则为g++ -g -o x x.cpp // 需要带一个命令行参数argv[1], // 必
一见
2018/08/10
1.2K0
从并发处理谈PHP进程间通信(一)外部介质
枕边书
2018/01/04
1.3K0
怎么正经的实现shell脚本单例运行?
一个非常简单的思路就是,新的脚本被执行时,先检测当前脚本是否有其他实例正在运行,如果有则直接退出。
编程珠玑
2020/05/27
2.3K0
聊聊Yii2和ThinkPHP5的文件缓存
Yii2和ThinkPHP5缓存操作提供的公共方法对比 Yii2缓存提供的方法 get 获取缓存 set 设置缓存数据 exists 判断缓存是否存在 mset multiSet 方法别名,批量设置缓存 mget multiGet 方法别名,批量获取缓存 add 添加缓存返回true,存在则不做操作 madd 批量添加多个,返回成功插入数组 delete 删除缓存 flush 清空缓存所有数据 offsetExists ,exists别名 offsetGet ,get别名 offsetSet,se
写PHP的老王
2019/08/12
1.3K0
用 abstract unix socket 实现进程单实例运行
http://stackoverflow.com/questions/2964391/preventing-multiple-process-instances-on-linux
byronhe
2021/06/25
1.3K0
相关推荐
flock分析与文件权限问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档