沒想到,用極坐標畫素數時竟然出現了這神奇的一幕!

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

又是美美

的一波圖

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

用極座標表示出 5000 和 50000 以內的素數

有技術宅指出公式是,若 p 是素數,則 {(x,y) | x=p*cos(p), y=p*sin(p)} 被標記

求問 5000 以內那個圖,倆條白色螺旋線是怎麼回事?如何形成的?是線上絕對沒有素數嗎?原理是什麼?和斐波那契螺旋、黃金分割之類的什麼關係?

題主的問題實在太有趣了,我半夜爬起來研究這個問題,搬個板凳慢慢講給你聽。

咱不看500到50000那麼多的質數了,看500到1500就夠了,並且把質數塗成藍色,把合數塗成紅色,就得到:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

發現了吧,大概11點鐘方向和5點鐘方向的確各有三列數全是合數。如果你還是看不太清楚,我把500-20000內的質數和這三條全是合數的線畫出來:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

數一下第一個圖,會發現視覺上向外輻射的螺旋線一共有44條,為什麼這44條曲線中恰好有6條上沒有質數?下面來解決這個問題。

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

1.

為什麼恰好有44條螺旋線

實際上螺旋線上的自然數並不相互挨著,自然數是跳躍著旋轉排列的(相差一弧度也就是約57度),挑出500-550之間的自然數,相鄰自然數用短線連上,是這個樣子分佈的:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

如果兩個自然數m,n的夾角之差 | m - n | 恰好接近2π的整數倍,它們在圖上就會處在同一個方向,也就是一條螺旋線上,而:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

恰好是一個非常接近整數的數,所以每隔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的奇數倍數出現所賜),連在一起視覺上更加顯眼而已。如果把所有沒有質數的螺旋畫出來,應該是這樣:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

連續44個自然數中,能被11整除的奇數只有兩個,相隔22,這就是為啥只有兩條奇葩的對稱的全合數螺旋線小集團脫穎而出。

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

4.

當素數表越來越大時會怎樣

我們會發現更多更接近2π倍數的整數,比如:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

但下面這個數710則更加接近,並且它是偶數,根據前面的推導,可以看到更多純合數的懸臂:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

1萬個自然數跨度上,上面44條螺旋線的懸臂旋轉幅度是:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

從上面的圖片可以驗證這一點,每1萬個自然跨度下,懸臂旋轉半圈多一點。

可以猜測當有很多素數時,將形成710條向外輻射的螺旋線,並且這些螺旋線相當直,每100萬個自然數能夠使它旋轉:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

也就是說每一百萬個自然數跨度上,這710條懸臂只旋轉5度。如果你生成前一億自然數中的質數圖,才能發現懸臂轉過一圈。

由於710=2×5×71,可見710條懸臂中編號是2、5、71倍數的懸臂都是純合數懸臂,我們能找到更多3條相鄰懸臂都是合數的情況出現。存在5條相鄰的合數懸臂,比如編號為212,213,214,215,216的懸臂。

手頭沒有那麼大的質數表,就不畫圖了,留個念想。

回答完畢。

=========強迫症的分割線=========

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

5.

驗證猜想

從wiki質數頁面鏈接到一個提供質數表的網站The first fifty million primes,下載了前一百萬個質數,現在把區間[1006721, 15485863]之間也就是一百萬到一千五百萬之間的質數畫出來是這樣:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

數一數,一共有71條粗懸臂,把左邊部分拉近點看:

沒想到,用極座標畫素數時竟然出現了這神奇的一幕!

可以看到每一條粗懸臂一般含有四條細懸臂。這是因為10個連續自然數中除去5個2的倍數和兩個5的倍數,還剩四個數,只有在這四個數代表的懸臂上才有可能出現質數。十點鐘方向上較大的空白是五條相鄰的合數懸臂。這些懸臂在跨度1400萬的自然數區間內只旋轉了不到70度,完美驗證了上一節的猜測。

經梅成廣提醒,Matlab的A=primes(n);函數可以瞬間產生比n小的所有質數,好方便有沒有!經測試這個函數可以返回值小於1.2億的所有質數。

Matlab代碼如下:

function testprime()

x = [];y = [];x1 = [];y1 = [];x2 = [];y2 = [];

close all

%改下面這個數

n = 10000;

%可以使用primes函數快速生成小於1.2億的質數

for i=500:n

data(i) = isprime(i);

if data(i)

x(end+1) = i*cos(i);

y(end+1) = i*sin(i);

else

x1(end+1) = i*cos(i);

y1(end+1) = i*sin(i);

end

x2(end+1) = i*cos(i);

y2(end+1) = i*sin(i);

end

%全部質數

plot(x, y, '.');axis equal

%全部合數

figure;plot(x1,y1,'.r');axis equal

%全部自然數

figure;plot(x, y, '.',x1,y1,'.r');axis equal

%自然數,用短線連

figure;plot(x2,y2,'b');axis equal

%突出螺旋線

figure;plot(x, y, '.');axis equal

%A = [536,517,542,520,514,539];

A = 514:2:558;

A(end+1) = 517;

A(end+1) = 539;

for i=1:length(A)

rr = [];

k = A(i);

while k<=n

rr(end+1) = k;

k = k + 44;

end

hold on;plot(rr.*cos(rr), rr.*sin(rr), 'r-');

end

end

https://www.zhihu.com/question/24236455/answer/27138389

----這裡是數學思維的聚集地------


分享到:


相關文章: