「數學思維繫列」你可能不知道,小學學的素數既有趣又有用還很難

2020-12-06 gongyouliu

大家在小學就學過素數了,素數也叫質數,就是除了1和自身之外沒有其他約數(也叫因數) 的自然數,比如2、3、5、7、11等都是素數,而4、6、8、9就不是(這種數叫做合數)。回顧了素數的概念後,下面我們來聊聊與素數有關的有趣話題。

2是最小的素數,也是唯一的偶素數,2在所有素數中的地位和價值是非常獨特的,我們已經在《你可能不知道的數字2》中進行了比較詳細的介紹。

根據素數的定義和性質,任何一個自然數都可以分解為若干個素數的乘積。素數的個數是無限多的,歐幾裡得在《幾何原本》中給出了一個非常經典的反證法證明,感興趣的讀者可以看參考文獻1了解這個證明過程。素數有非常多有意思的性質和命題,有些命題比較簡單,很容易證明,比如剛剛提到的素數個數是無限多的。有很多卻非常困難,幾百年以來,都沒有被世界的數學家解決,這其中最出名的要數哥德巴赫猜想了。哥德巴赫猜想是說,任何大於等於4的偶數,都可以表示為兩個素數之和。目前關於這一命題最好的結果是我國知名數學家陳景潤的結論,陳景潤證明了:一個充分大的偶數必定可以寫成一個素數加上一個最多由2個質因子所組成的合數。

上面是素數基礎知識的介紹,看起來素數是數學家研究的話題,其實不然,素數與我們的生活密切相關,素數的如下3個性質是非常重要的。

非常大的整數是難以分解為素因子的乘積的,需要非常大的計算量;

素數沒有1和本身之外的因子,素數和與它互質的數的最小公倍數是它們的乘積;

素數在自然數中的分布是沒有什麼規律的;

下面我們來談談在自然界和人類生活中素數的價值,這些價值的發揮基本都與上面素數的3個特性有關。

在汽車變速箱齒輪的設計上,相鄰的兩個大小齒輪齒數設計成素數,以增加兩個齒輪內兩個相同的齒相遇嚙合次數的最小公倍數(即是這兩個齒輪齒數的乘積,兩個素數的最小公倍數就是它們的乘積),這可以防止有的齒經常和另一個齒輪的某一齒單一接觸(特別是當這個齒設計有一些小的缺陷時,任何機械工程都是有一些小誤差的),可增強耐用度、減少故障。

圖1:齒輪之間的咬合,如果每個齒輪是

上述齒輪齒數的設計其實是用到了素數與它互質的數的最小公倍數是它們的乘積這一性質,這一性質在生物學上也有比較有意思的現象。大家熟知的知了,學名叫做蟬,在自然界進化出了非常特別的繁殖周期,目前發現的有13年蟬、17年蟬等(讀者可以看參考文獻了解更多細節),也就是它們的幼蟲需要在地底下分別生活13年、17年才能破土而出,蟬出土後的生命一般只有2個月左右,為了綻放兩個月的生命,它們需要在毫無光亮的地底下生活13年、17年,生命是多麼的神奇和偉大啊!

13年蟬、17年蟬之所以進化出這種奇特的繁殖周期,是為了逃避天敵的侵害並安全延續種群,因而演化出一個漫長而隱秘的素數生命周期(13、17都是素數)。當蟬的繁殖周期是13、17年時,蟬與它的天敵繁殖周期碰到一起就需要經過它們繁殖周期的乘積這麼多年,而如果他們的繁殖周期碰到一起的話,天敵的幼蟲就會以蟬的幼蟲為食,對蟬的種群延續是很不利的。蟬進化出這麼奇怪的繁殖周期就是為了避免天敵的傷害,這裡我們進一步看到了生物進化的魅力。

除了蟬以外,在害蟲的生物生長周期與殺蟲劑使用之間的關係上,殺蟲劑的質數次使用的有效性也得到了科學的證明:實驗表明,質數次數地使用殺蟲劑是最合理的,並且需要在害蟲繁殖的高潮期使用,這樣害蟲很難產生抗藥性。這樣使用主要是為了將相鄰批次的繁殖期的害蟲都被殺蟲劑殺掉,避免了不同次代的害蟲之間的交配繁殖。

在軍事領域,以質數形式發出的無規律變化的飛彈和魚雷可以使敵人不易攔截,這是利用了素數分布的無規律性。

素數在我們日常生活中也非常有用,大家每個人都有很多帳號和密碼,素數與他們都有關係。素數與我們生活最相關的應用要數在密碼學上的應用了。現在比較安全的密碼很多都是基於素數理論構建的,它主要利用了將一個非常大的整數分解為素因子是一件非常困難的事情這一特性。基於素數構建的複雜密碼體系,在有限的時間和現有的計算資源下基本是無法破解的。

我們知道,任何一個自然數都可以分解為素數的乘積,如果不計因數的次序,分解形式是唯一的。這叫做算術基本定理。但是將一個大整數分解卻沒有一個簡單易用的好方法,只能用較小的素數一個一個去試除,耗時極大。如果用計算機來分解一個100位的數字,所花的時間要以萬年計。可是將兩個100位的數字相乘,對計算機卻十分容易。美國數學家就利用了這一點發明了編制容易而破譯難的密碼體系,這種編碼方式以三位發明者姓氏的首字母命名為RSA碼。下面我們就來簡單說明這種密碼是怎麼巧妙利用素數來構建的。

RSA密碼的加密解密算法

下面講解RSA密碼的算法原理,我們可以通過如下8步來進行加密和解密,具體如下:

(1)選擇一對不同的、足夠大的素數p、q (p, q嚴加保密,不讓任何人知道,p、q越大,也越難破解);

(2)計算n=p*q;

(3)計算f(n)=(p-1)*(q-1) ;

(4)找一個與f(n)互質的數e,滿足 1<e<f(n);

(5)計算d,使得d*e ≡ 1 mod f(n);

這裡 ≡ 是數論中表示同餘的符號。公式中 ≡ 符號的左邊必須和符號右邊同餘,也就是兩邊模運算結果相同。顯而易見,不管f(n)取什麼值,符號右邊1 mod f(n)的結果都等於1;符號的左邊d與e的乘積取模運算後的結果也必須等於1。這就需要計算出d的值,讓這個同餘等式能夠成立,一般可以通過逐個嘗試的方法找到可行的d;

(6)公鑰KU=(e, n)(公鑰就是可以公開的,大家都可以知道),私鑰KR=(d,n)(私鑰需要自己保密,用於破解密碼用);

(7)對於0至n-1之間的任意一個整數M,可以這樣加密:C≡M^e(mod n)(這裡M^e是指M的e次方,下面類似),C就是需要傳輸的信息,將C給到你想傳遞信息的人;

(8)接收人收到信息C後,通過計算D=C^d(mod n),就獲得了原來的信息M,即D=M;

如果傳輸的信息很多,可以利用0、1、2、......、n-1 對信息進行編碼(比如需要傳輸的是英文單詞,可以對每一個字母編碼,可以根據字母順序編碼,a->1、b->2、c->3、以此類推)。下面我們講個例子讓大家更好地理解上面的原理的正確性。對這個感興趣的讀者也可以自己嘗試證明一下為什麼這個密碼體系是對的。

RSA密碼的簡單例子

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3(3與20互質),則e×d≡1 mod f(n),即3×d≡1 mod 20,這時可以取d=7,滿足e×d≡1 mod f(n)。這時公鑰為:KU =(e,n)=(3,33),私鑰為:KR =(d, n)=(7,33)。

我們可以用這套密碼體系來傳輸英文字母,用字母的順序對應的數字來代表該字母。比如如果我們要傳輸字母y,可以這樣進行:字母y在字母表中的序號是25,就用25來代替y,通過加密計算C≡M^e(mod n)≡25^3(mod 33) = 15625(mod 33)=16。你可以將16傳給收信息的人,收信息的人收到16後,用D=C^d(mod n)來解密,具體計算是D=C^d(mod n) = 16 ^7(mod 33) = 268435456(mod 33) = 25,這就是y對應的序號,因此解密過程成功。

作者曾經設計的一個帳號體系也用到了素數的知識,原理跟上面的RSA比較類似,大致意識是先確定帳號的容量m ,即這個帳號系統一共支持多少個帳號,找一個素數p與m互質,找另個一個素數q,滿足 p*q mod m =1(我的這個方法不要求p是素數,只要跟m互質就可以了,當然如果p是素數,只要不是m的因子,是一定滿足跟m互質的條件的)。

我的這個方法設計非常精巧,也比較簡單,它最大的價值是競爭對手通過註冊幾個帳號是無法猜測出帳號的生成規律的,從而無法知道你的產品有多少用戶。下面我們來講講這個方法的具體實現原理。

每個用戶根據他註冊的次序給他賦予一個整數值k,即這個用戶是第k個註冊的,採用下面圖2的算法獲得該用戶的帳號(即後面的u1、u2、u3等等)。同時我們可以採用圖3的算法根據用戶的帳號獲得用戶是第幾個註冊的用戶。下面a的目的是為了讓所有用戶帳號位數一樣,比如如果a取9999999(9百99萬9999),m取90000000(9千萬),那麼用戶的帳號範圍就是10000000(1千萬)到99999999(9999萬9999)。大家可以看到這裡面生成帳號的過程類似RSA的加密過程,從帳號獲得用戶註冊順序的過程類似RSA的解密過程。

圖2:用戶帳號生成算法(類似於RSA的加
圖3:從用戶帳號獲得用戶的序號(類似於

素數在人類生活和自然界中的應用應該還非常多,等待聰明的人類來挖掘和探索。有興趣的讀者也可以結合素數的性質多思考,看是否能夠找到素數的巧妙應用。

最後我們從一個新的角度來看待素數,如果對大學線性代數忘光的讀者可以忽略下面的講解。每個自然數n都可以表示為若干個素數的乘積(見下面公式,這裡k是一共不同的素數個數,t_k 是這個素數在n的因子中出現的次數),如果將素數按照從小到大排序,這種表示是唯一的。

因此,素數在自然數中的價值有點像向量空間的基(向量空間中是加法,上式是乘法,本質是一樣的,只要將上式兩邊取對數就變成了加法了)。如果把全體自然數想像成一個向量空間,素數就是這個空間的基,所有自然數都可以由素數全體組成的基底表示出來,只不過素數基底有無窮多個。任何一個自然數都可以看成由有限個基底張成的向量空間中的一個點。

參考文獻

相關焦點

  • 魔鬼數學 | 意外有趣的故事合集,一本書改變你對「數學」的認知
    而你也許聽見過類似這樣的回答和反問:「因為數學在工程、科學上都有用啊,你現在用的手機裡都包含了數學。」「那是工程師、科學家這些人的事情吧?我幹嗎要知道呢?」但是,我們知道美國火車站恐襲不少,但是從來不會達到這個數字。當然了,我不是要全盤否定「比例換算」這種方法,方法本身沒錯,重點是你得用對地方。
  • 你不知道的素數判斷方法
    素數判斷?這不是小學學的嗎?您先別著急,不管您是小學,初中還是高中,從事什麼職業,我相信,堅持看完你一定有收穫![C語言必知必會]素數的判斷我們要判斷素數,首先要知道素數的定義。= 0 , n 就是素數 進一步思考,有必要遍歷到 n - 1 嗎?
  • 從數學領域看,AI「人工智慧」可能已經有意識了?
    然而,大多數高級AI研究的最終目標卻是開發「通用人工智慧」(即:GAI)。本質上,我們想要的是一種合成的思維,如果將其放置在具有類似功能的物理容器中,它的功能可以與人類相同。很難爭辯說,現代AI將永遠具備人類智能,甚至更難展示出通往實際機器人意識的道路。但這並非不可能。實際上,已經有有一部分專業人士開始認為,人工智慧可能已經有意識了。只不過,這次是從數學領域提出的見解。數學家約翰尼斯·克萊納和物理學家肖恩·塔爾最近發表了一篇關於意識本質的研究論文,從數學領域上講,這似乎表明宇宙及其中的萬物都充滿了物理意識。
  • 發現「孿生素數」猜想的證據,但可能在另外一個宇宙中!
    孿生素數猜想指出,存在無限多個孿生素數,並且無論沿著數線走多遠,你都會不斷遇到它們。同時還指出,存在無限多個素數對,它們之間每隔一個可能的間隙(相4,8,200000等的素數對),數學家非常確定這是真的。當然看起來確實是真的,如果這不是真的,這將意味著質數並不像每個人想像的那樣隨機,這將擾亂很多關於數字如何作用的想法,但從來沒有人能證明這一點。
  • 素數是什麼,有哪些和素數有關的數學猜想還未得到解決?
    證明思路:假設存在最大的素數P,那麼將已知所有的素數相乘再加1,得到M:M=2×3×5×7×11×……×P+1,顯然M不可能被已知的任何一個素數整除,所以M有可能是素數,或者存在比P更大但是比M小的素數因子;無論哪種情況,都說明存在比P更大的素數,與假設矛盾,所以素數是無限的。
  • 陶哲軒「他的證明比我強」,這個天才青年解決了最簡單的數學難題
    魚羊 蕭簫 發自 凹非寺量子位 報導 | 公眾號 QbitAI傳奇數學家張益唐之後,又有一位跟「孿生素數猜想」有關的數學家,摘下了「數論界最高獎」柯爾獎。這一用有理數逼近無理數的問題,對於丟番圖逼近領域的數學家來說,幾乎可以說是最基礎、最關鍵的問題之一。改進張益唐最佳結果張益唐一舉成名,是因為「孿生素數猜想」。猜想聽起來很簡單:證明存在無窮多對間隔為「有限」的質數。
  • 陶哲軒「他的證明比我強」,這個天才青年解決了最簡單的數學難題
    魚羊 蕭簫 發自 凹非寺量子位 報導 | 公眾號 QbitAI傳奇數學家張益唐之後,又有一位跟「孿生素數猜想」有關的數學家,摘下了「數論界最高獎」柯爾獎。這一用有理數逼近無理數的問題,對於丟番圖逼近領域的數學家來說,幾乎可以說是最基礎、最關鍵的問題之一。改進張益唐最佳結果張益唐一舉成名,是因為「孿生素數猜想」。猜想聽起來很簡單:證明存在無窮多對間隔為「有限」的質數。
  • 「數學思維繫列」談談歸納與演繹思維
    我們在高中數學中就學過數學歸納法,這個方法的核心思想是:一個關於自然數n的命題,如果我們可以證明n=1的時候它是對的,同時假設當n=k時它是對的,在這兩個前提下,如果我們能夠進一步說明n=k+1時也是對的,那麼我們可以得出這個命題關於任何自然數n都是對的結論(有興趣的讀者可以證明一下)。一般的歸納思想比數學歸納法更加普適,可以用在更多的場景中。
  • 「數學搖滾」和「數學」有幾個關係?
    當LITE巡演公布的時候,很多人對「數學搖滾」一詞不理解,New Noise今天專門開貼為大家普及一下這個搖滾流派中的「不和諧分子」。
  • 為什麼1既不是素數也不是合數?
    今天大小吳來和大家探討一個問題:為什麼1既不是素數也不是合數?也就是說,如果我們以因數個數為標準對正整數進行分類,可以得到如下表格:正整數因數情況因數個數111個素數1、本身2個合數1、本身、其他因數大於等於3個可以看出,1的因數只有1本身,所以它既不屬於素數的範疇也不屬於合數的範疇。
  • 2020年阿貝爾獎公布,又一位數學「三大獎」大滿貫得主誕生
    他們在「在群理論、數論以及組合論中運用概率論與動力學方法」做出了開創性工作,縮短了不同數學領域之間的間隔,解決了曾經看似無法企及的數學難題。Furstenberg 稱,當他得知自己獲獎時完全不敢相信是真的,早些時候他並沒有意識到自己的想法與工作會產生如此大的影響。Furstenberg 說:「像所有的數學家一樣,我只是遵從自己的直覺去探尋那些看起來有趣的事物。」
  • 國際頂尖數學家張益唐:數學中並不總有靈光一現的時刻
    「我說他還挺會包」,第二次、第三次也是這樣。「我說這還用算呢?他說當然用算了,他把那餛飩皮像撲克牌一樣扭開,如果是100個皮呢,那碗裡餡兒他也分100份,這樣包出的餛飩不多也不少。我說,哦,這數學還有點用啊!」 在孫雅玲看來,一個人只做一件事,「上班這樣,下班這樣,也不說話」,是可能會得憂鬱症的,除了包餛飩,她還會讓他炒菜。
  • 數學趣史 | 有趣的素數
    1既不是素數,也不是合數。每個合數都可以表示成一些素數的乘積,因此素數可說是構成整個自然數大廈的磚瓦。在自然數數列中,究竟哪些是素數呢?公元前300多年,希臘學者埃拉託色尼提出了一種方法,他在一張紙上寫上自然數列的數字,把它貼在一個柜子上,然後把其中的合數一個一個地挖去。
  • 好用又好玩的手機APP推薦,絕對有你不知道的!
    3、彩雲天氣(為您預報幾點幾分下雨)支持平臺:Android/iOS彩雲天氣,這是一個「神奇」的天氣預報APP,它可以為你預報幾點幾分下雨,幾點幾分停雨,還可以讓你了解雨從哪裡來,要到哪裡去,是不是很酷?很多人說它是一個有「靈魂」的天氣預報APP。
  • 有趣、有味也有料,探秘「城市料理人」的生活……
    他們始終不願意相信,其實我們的城市不缺有趣、不缺韻味也不缺好料,缺的是能發現有趣、發掘韻味也能發揮好料的「城市料理人」。每一道讓人垂涎欲滴的菜餚,都離不開料理人絕佳的創意和爐火純青的手藝。若把我們活色生香的城市生活比作一道色香味俱全的佳餚,自然也是離不開傾力打造它的料理者。
  • 低目標會拖累你,用「登月思維」找高目標,把不可能變可能
    這就叫著名的「登月思維」:找一個看似不可能的高目標,公開宣布,然後集中力量(實現這個目標),把不可能變成可能。「登月思維」的好處 1.目標大,朝著目標努力回報大我們現在經常這樣做,當一件事情不知道能不能完成的時候就會在朋友圈宣布一條消息:「我要立個flag,這個月要看完一本書,並且在朋友圈每天打卡,請圈友監督我」。
  • 數學提分秘籍之數學作圖能力的培養,不應忽視的學習策略
    在解題過程中,首先要在腦中有畫圖的意識,形成條件反射,拿到一道數學題就先畫圖。而且要有用圖的意識,畫了圖而不用,等於沒畫。根據已知條件畫好草圖,確定和良好思維品質的形成等都具有重要意義。有了畫圖、用圖的意識後,要具備畫圖的技能。有人說,畫圖還不簡單啊,學數學有誰不會畫圖啊。還真不要小看這一點。很多同學畫圖沒有好習慣,不會用畫圖工具。
  • 數學是真實的嗎
    在過去幾千年中,在全世界的任何地方、任何時候、任何數學老師都得承認,「7是素數」這個說法是正確的,而不會給你的回答打叉。然而,很少有其他學科可以像數學這樣獲得如此令人難以置信的共識。但是,如果你問100位數學家這些數學命題的本質可以用什麼來解釋,你卻可能得到100個不同的答案。數字7可能真的只是作為一個抽象的數學對象而存在,而素數性質是該對象的一個特徵。
  • 素數中的數學知識:費馬二平方定理
    業餘數學之王費馬在1640年提出了一個著名的猜想:奇質數能表示為兩個平方數之和的充分必要條件是該質數被4除餘1,這就是數論中的費馬二平方定理,但費馬沒有給出嚴格的證明,一直到100年之後的1747年歐拉給出了該猜想的嚴格證明,才使得這個猜想變成了數學定理,如果你沒有一定的數論知識歐拉的巧妙證明你是很難理解的,本篇我們就來了解下該定理首先所有素數可以分成兩類
  • 素數有哪些用途,北美洲有一種蟬,利用素數性質來巧妙躲避天敵!
    網絡中廣泛使用的RSA算法,就是基於素數性質的重要應用;在大自然中,素數甚至還關係著一個物種的生存和繁衍。素數表示只能被1和本身整除且大於1的自然數,其餘大於1的自然數叫做合數,「1」既不是素數也不是合數;算術基本定理指出,任何大於1的自然數,都可以唯一分解為有限個素數的乘積。素數就是構成所有數字的基石,要想了解數字的性質,就必須弄清楚素數的奧秘。