數學小知識 | 判斷質數的方法

2021-02-19 雲南學慧教育

歡迎轉發到朋友圈

質數(也稱素數)是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數,否則就稱合數(規定1即不是質數也不是合數)。

自古以來,數學家們就想弄明白:自然數中到底有多少個質數,質數的分布有什麼規律,如何去尋找質數。




公元前300多年,希臘學者埃拉託色尼提出了一種方法,先把自然數列的數寫在一個表中,然後把其中的合數一個一個地挖去。步驟如下:

❶ 先把1刪除;

❷ 讀取數列中當前最小的數2,再把2的倍數刪除;

❸ 讀取數列中當前最小的數3,再把3的倍數刪除;

❹ 依次進行下去,直到把所求範圍內的數均讀取完。

以上就是著名的埃拉託色尼篩選法。

1934年,在埃拉託色尼選去問世兩千多年後,一位年輕的印度學生辛答拉姆創造了如圖所示的一個數表,利用這個數表找質數的方法被稱為「辛答拉姆篩法"。 

通過上表可以發現:每一行數都是等差數列

數表的第1行第1列都是首項為4,公差為3的等差列,這樣第1行第m個數就可以表示為:4+3(m-1)=3m+1。

而第1列與第1行的數都相同,所以第m行第1個數也是3m+1。

從第2行開始,以後每一行也都是等差數列,公差分別為5,7,9,11,13,……,即2m+1,因此第m行第n個數為3m+1+(2m+1)(n-1)=2mn+m+n。


那麼,如何讓利用辛答拉姆篩法尋找質數呢,方法如下:


(1)如果M在數表中,那麼 2M+1 一定不是質數,例如,M=4 在數表中,2M+1=9,9不是質數;M=17在數表中,2M+1=35,35不是質數。


(2)如果M不在數表中,那麼2M+1一定是質數,例如,M=5 不在數表中,2M+1=11,11是質數,M=8不在數表中,2M+1=17,17是質數。

▲辛達拉姆篩構造的表


接下來我們一起看下辛達拉姆篩法的證明


(1)假設M是數表中第m行第n列的數,則M=2mn+m+n,於是2M+1=4mn+2m+2n+1=(2m+1)(2n+1),是合數。


(2)對於M不在數表中的情況,想要正面證明2M+1是質數相當困難,所以我們考慮用「反證法」。

假設2M+1不是質數,則2M+1=xy(x,y為整數),由於2M+1為奇數,所以x,y也必為奇數,不妨設x=2p+1,y=2q+1,從而2M+1=(2p+1)(2q+1)=4pq+2p+2q+1,故M=2pq+p+q,根據前面的分析可知M是數表中第p行第q列的數,與假設相矛盾,故辛達拉姆篩法成立。


與埃拉託色尼篩法相比,辛達拉姆篩選質數的方法並不是那麼直觀和易操作,但是基於辛達拉姆篩法設計的判斷質數的程序要比常規方法快一倍,在學習中,多了解一種方法,就能讓我們感受到一次數學的魅力所在。

為了方便大家下次查看,請點擊下面「在看」需要的時候可以快速查看這條消息!

來源:本文來源於雲南教育快訊,謹致感謝,如有侵權,請聯繫刪除!

雲南學慧教育校區服務中心:

一校地址:經典雙城校區

昆明市高新區經典名居學慧教育10幢(西山一中斜對面)

二校地址:中天融域校區

中天融域二期(廣福路與前興路交叉口)23幢1單元2層209號

三校地址:潤城校區

潤城四區3幢105室(潤城師大附中對面)

諮詢電話:0871-63133336   0871-63812619

              15925165546(楊老師) 

相關焦點

  • 100以內質數的快速判斷方法
    對於30以內質數,大部分老師都會要求學生記憶,所以瞬間就可以判斷,但對於100以內任意自然數,如何快速判斷它是否是質數呢?其實只要掌握正確的方法,不需要任何專門的訓練,都可以在3秒內判斷出來。一、首先要明確質數的意義質數和合數是根據因數的個數來分類的,質數只有2個因數,合數至少有3個因數。二、探究判斷質數的方法課本例1提供了一個方法,依次劃掉某些數的倍數,把不是質數的都排除了,剩下的就都是質數。
  • 長沙小升初數學必背基礎知識:質數
    在長沙小升初的備考過程中,數學科目需要記憶的知識雖然不多,但往往差之毫厘失之千裡。所以在備考數學的過程中,大家一定要把基礎知識和公式準確的記憶下來。長沙奧數網編輯整理了長沙小升初階段數學必背的基礎知識,供小升初學生參考。   什麼叫質數?   質數又稱素數。
  • 用Python判斷質數的嘗試
    我們的目標是:輸入一個數字之後,讓計算機判斷它是不是質數。拋出問題後,首先需要解決,什麼是質數的問題。與純數學的想法不同,我們需要找到一個可以讓計算機接受的判定的法則。質數,就是除了1以及本身以外,沒有其他因數的自然數。首先它是個自然數,因此程序的輸入端就解決了,N=int(input())。
  • 教程資源|判斷質數和合數程序
    在數學中經常會看到質數和合數,但很多人卻不知道什麼是質數,什麼是合數?根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的,最小的質數是2。質數又稱素數,個數是無窮的,一個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數。
  • 小升初奧數天天練數論——質數合數的判斷
    北京奧數網訊 智康1對1付金海老師每日提供奧數天天練試題供咱們小升初的孩子練習,今日發布數論——質數合數的判斷。     點擊進入:奧數天天練   考點:質數合數的判斷     難度:2星   題目:康康最近遷居了,康康驚奇地發現他們新居的門牌號碼是四位數.同時,他感到這個號碼很容易記住,因為它的形式為
  • 數學基礎概念 | 質數、合數!
    合數是由若干個質數相乘而得到的。所以,質數是合數的基礎,沒有質數就沒有合數。這也說明了前面所提到的質數在數論中有著重要地位。歷史上曾將1也包含在質數之內,但後來為了算術基本定理,最終1被數學家排除在質數之外,而從高等代數的角度來看,1是乘法單位元,也不能算在質數之內,並且,所有的合數都可由若干個質數相乘而得到。
  • 有關質數的一些小知識
    #素數不是吃素的#  #數學啟蒙#  有關質數的一些有趣小知識之前,我寫過兩篇介紹素數的小文章【給你多少個數字, 只用乘法可以得到全部正整數
  • 小學數學題,判斷3599是質數還是合數,這兩種方法你覺得哪種好用
    但一個大於100的自然數,我們如何判斷它是否為質數呢?最直接的方法就是試除。但是我們也不是從2開始每個數都去試下,這樣效率太低,自己心裡也沒數到底要試到哪個數才算結束?總不至於說一直試到那個數本身吧。至於怎麼判斷,在專欄《小學基礎數論》裡有相關文章介紹。大家也可以參考一下這個視頻,判斷3599是否為質數?
  • 教師招聘數學《 質數和合數》說課稿
    接下來我將對學情進行分析:小學階段的學生他們年齡偏小,活潑好動,想像力豐富,以具體的形象思維為主,在課堂表現活躍,希望得到老師的認可,同時他們注意力集中時間短,易被外界環境分散注意力;另一方面從知識儲備方面來看,在前面已經學習了因數和倍數,對數的特點以及數與數之間的關係有了一定的認識,為本堂課的學習打下了基礎。
  • 質數與合數的暢想
    理解質數和合數的概念,並能判斷一個數是質數還是合數,會把自然數按因數的個數進行分類。2. 通過自主探究、合作交流的方法,理解質數和合數的意義,經歷概念的形成過程。3. 提升自主探索、獨立思考、合作交流的能力, 充分展示數學的魅力。
  • 如何判斷一個正整數是否為質數的三種方法 | 附Python程序
    按照規定,1不算素數,最小的素數是2,其後依次是3、5、7、11等等。早在2500年前,古希臘數學家歐幾裡德就證明了素數是無限的,並提出少量素數可寫成 「2的n次方減1(2^n-1)」 的形式,這裡n也是一個素數。但是目前人類已知的素數很有限,因為數字越大,要發現新的素數就越困難。不過,很多數學家曾對素數問題進行過研究。
  • 數學課堂 | 什麼是質數和合數?
    例如,2、3、5、7 都是質數。2 是最小的質數。100 以內的質數:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。(1) 查質數表。常見 100 以內質數表、1000 以內質數表。(2) 用試除法去判斷。用 2、3、5、7 等質數去試除。
  • 樹上微精讀——自然數的質數判定,合數分解與孿生質數分布
    閱讀本書只需具備一些初等數論知識。儘管本書探討的是世界難題,但對於不具備高深數論知識的普通數學愛好者而言,大家不僅能讀懂書中全部內容,而且能學會在自己的計算機中進行大數的數性判定和分解,從而激發人們對學習數論的興趣。同時本書也是能夠激發數論工作者創新靈感的一本參考書。
  • 小學數學——怎樣記住100以內的質數?
    小學數學——怎樣記住100以內的質數?關於質數與合數,北師大版小學五年級上冊第三單元給出下面的定義一個數只有1和它本身兩個因數,這個數叫做質數;一個數除了1和它本身以外還有別的因數,這個數叫做合數;1既不是質數,也不是合數。
  • 如何快速判斷一個自然數是質數
    在大於1的自然數中除了1和這個數本身外,沒有其他因數的數稱為質數。質數也叫素數。除了2以外,所有的質數全部都是奇數。
  • 少兒編程Python第4課-for循環語句(質數判斷)
    因此,如果要遍歷字典,完全可以先調用字典的上面三個方法之一來獲取字典的所有 key-value 對、所有 key、所有 value,再進行遍歷。如下程序示範了使用 for 循環來遍歷字典:實例4:輸出小明的考試成績:my_dict ={'語文':89,'數學':92,'英語':80}my_dict ={'語文':89,'數學':92,'英語':80}# 通過items()方法遍歷所有
  • 如何快速判斷149與281是否為質數,判斷過程最關鍵
    昨天我們說了質數的一些特點。其中也講到了一點,怎樣快速判斷一個自然數是否是質數?當然這個數字不能太大,1000以內還是相對比較快能判斷出來。採用的方法是找到小於並且最接近這個自然數的完全平方數。用我們要檢驗的這個數除以該完全平方數的平方根以內的質數。我們舉個簡單的例子,149是不是質數?如果我們直接這樣看的話,可能肯定是看不出來的。那如果從2開始一直往上,一個數一個數試,(據說電腦是這麼判斷的,直到試到這個數本身為止),我們也不知道具體要試到哪個數為止才不至於遺漏?
  • 如何快速判斷一個自然數是不是質數,除了試除法外還有更好的方法
    100以內有多少個質數呢?總共有25個。大家可以看一下100以內質數表。100以內的質數表最小的三位數的質數是101。最大的三位數的質數是997;最小的四位數的質數是1009。關於質數,還有個比較特殊的地方。除了5以外,任意多位尾數是5的自然數,一定是合數。因為尾數是5的自然數,一定是5的奇數倍數。那麼如何快速判斷一個數字是否是質數呢?可能大家會想到的是用試除法。這個方法可以嗎?可以,只是效率相對來說有些低。
  • 如何用java判斷一個數是不是質數?
    昨天分享了怎麼判斷一個數是不是迴文數,目的是為了鞏固一下if選擇語句和求餘數運算符,今天分享一下怎麼判斷一個數是不是質數,可以鞏固for循環、if選擇語句、還有沒怎麼使用過的基本數據類型Boolean。思路:首先要知道的質數的概念是什麼。
  • 何時攻破質數難題,探尋神奇的質數
    步驟如下:(1)先把1刪除;(2)讀取數列中當前最小的數2,再把2的倍數刪除;(3)讀取數列中當前最小的數3,再把3的倍數刪除;(4)依次進行下去,直到把所求範圍內的數均讀取完,這種造質數表的方法被稱為「埃拉託色尼篩選法」。