题主的问题实在太有趣了,我半夜爬起来研究这个问题,搬个板凳慢慢讲给你听。

咱不看500到50000那么多的质数了,看500到1500就够了,并且把质数涂成蓝色,把合数涂成红色,就得到:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图

发现了吧,大概11点钟方向和5点钟方向的确各有三列数全是合数。如果你还是看不太清楚,我把500-20000内的质数和这三条全是合数的线画出来:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图1

数一下第一个图,会发现视觉上向外辐射的螺旋线一共有44条,为什么这44条曲线中恰好有6条上没有质数?下面来解决这个问题。

1. 为什么恰好有44条螺旋线
实际上螺旋线上的自然数并不相互挨着,自然数是跳跃着旋转排列的(相差一弧度也就是约57度),挑出500-550之间的自然数,相邻自然数用短线连上,是这个样子分布的:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图2

如果两个自然数m,n的夹角之差\left| m-n \right| 恰好接近2\pi 的整数倍,它们在图上就会处在同一个方向,也就是一条螺旋线上,而:
\frac{44}{2\pi }=7.0028\approx 7
恰好是一个非常接近整数的数,所以每隔44个自然数,两个自然数就会落在同一条螺旋线上,而多出来的0.0028,就是为啥每一条螺旋线会轻微逆时针旋转的原因。

2. 为什么有六条螺旋线上没有质数
我们只讨论大于500的自然数,在螺旋线上找到一个已知点后就可以得到:
左上角的三条全合数螺旋线为:536+44k,517+44k,542+44k
右下角的三条全合数螺旋线为:520+44k,514+44k,539+44k

因为536、542、520、514四个数是偶数,所以无论加多少个44结果还是偶数,所以这四条螺旋线全是合数;
因为517和539有因数11,所以无论加上多少个44结果还是能被11整除,所以这两条螺旋线也全是合数。

3. 只有这六条螺旋线上没有质数吗
不是的,只要有一个偶数出现,一条螺旋线上就不会再有质数出现了,因为加多少44还是偶数。这六条螺旋线只是因为三条相邻线上都没有质数(拜517和539这俩11的奇数倍数出现所赐),连在一起视觉上更加显眼而已。如果把所有没有质数的螺旋画出来,应该是这样:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图9

连续44个自然数中,能被11整除的奇数只有两个,相隔22,这就是为啥只有两条奇葩的对称的全合数螺旋线小集团脱颖而出。

4. 当素数表越来越大时会怎样
我们会发现更多更接近2\pi 倍数的整数,比如:
\frac{377}{2\pi }=60.0014
但下面这个数710则更加接近,并且它是偶数,根据前面的推导,可以看到更多纯合数的悬臂:
\frac{710}{2\pi }=113.000009595

1万个自然数跨度上,上面44条螺旋线的悬臂旋转幅度是:
44 mod 2\pi \times \frac{10^4}{44}=4.02rad=230^\circ
从上面的图片可以验证这一点,每1万个自然跨度下,悬臂旋转半圈多一点。

可以猜测当有很多素数时,将形成710条向外辐射的螺旋线,并且这些螺旋线相当直,每100万个自然数能够使它旋转:
710 mod 2\pi \times \frac{10^6}{710}=0.085rad=4.86^\circ
也就是说每一百万个自然数跨度上,这710条悬臂只旋转5度。如果你生成前一亿自然数中的质数图,才能发现悬臂转过一圈。
由于710=2\times 5\times 71,可见710条悬臂中编号是2、5、71倍数的悬臂都是纯合数悬臂,我们能找到更多3条相邻悬臂都是合数的情况出现,但是很遗憾,没有5条相邻悬臂都是合数的情况。

手头没有那么大的质数表,就不画图了,留个念想。

回答完毕。

=====================强迫症的分割线=====================

5.验证猜想
从wiki质数页面链接到一个提供质数表的网站The first fifty million primes,下载了前一百万个质数,现在把区间[1006721, 15485863]之间也就是一百万到一千五百万之间的质数画出来是这样:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图15

数一数,一共有71条粗悬臂,把左边部分拉近点看:

极坐标表示 5000 到 50000 之间的素数画点到纸上为什么会形成一条斐波那契螺旋线?插图16

可以看到每一条粗悬臂一般含有四条细悬臂。这是因为10个连续自然数中除去5个2的倍数和两个5的倍数,还剩四个数,只有在这四个数代表的悬臂上才有可能出现质数。并且这些悬臂在跨度1400万的自然数区间内只旋转了不到70度,完美验证了上一节的猜测。

梅成广 提醒,Matlab的A=primes(n);函数可以瞬间产生比n小的所有质数,好方便有没有!经测试这个函数可以返回值小于1.2亿的所有质数。

— 完 —

本文作者:王小龙

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 4 个回答,查看全部。
延伸阅读:
研究素数(质数)有什么意义?
矢量积这个概念是怎么产生的?为什么人们会想到用一个垂直于原来平面的向量来表示这个运算结果?这样做有什么好处?

分享到