尤拉計劃問題七matlab實現
阿新 • • 發佈:2018-11-10
Problem 7 :
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?
思路 :
我們首先列舉出一些有用的條件:
- 1不是素數。
- 素數中除了2是偶數以外,其他的素數都是奇數。
- 任何一個數字 只能有一個大於 的素因子。
- 對任意的數 進行素性測試的結果是:如果我們找不到小於或等於 的數整除
好的,以上的條件讓我們對求解素數有了一個理性的認識,那麼接下來直接上程式碼。
程式碼 :
clc;clear all;close all tic %Measurement program run time i = 1; n = 2; while i<10001 n = n+1; x = 3; if mod(n,2) == 0 n = n + 1; end while x <= sqrt(n) if mod(n,x) == 0 break end x = x + 2; end if x > sqrt(n) i = i + 1; end end toc fprintf('The answer is %.0d\n',n)
結果 :104743
小結 :
程式碼中用了一個測試程式執行時間的函式:
程式碼塊
這個組合很經典,而且用法也比較簡單。
還有在matlab中註釋儘量用英語,matlab對中文的相容性不好,下次開啟程式時可能中文顯示亂碼。本來英語就不好,好要英文註釋,不可能!
開始的時候我一直是用中文進行註釋,然而下次開啟的時候看註釋就是這個樣子----------------%????????,
what?這是個啥嘛?辛辛苦苦打上去的註釋呢?你快回來,我一人承受不來。
面對這個問題,我也頗為不快,那能怎麼辦,那就去改變,嘗試過。但是問題還是得不到解決好吧!既然改變不了外界環境,那我只能改變自我了!其實這跟英文水平沒多大關係,要自信,相信我,沒錯的!因為你只要自己看的懂就行,順便練習一下英文嘍,一舉兩得,何樂而不為呢!希望大家多多交流,與君共勉!