1. 程式人生 > >尤拉計劃問題十matlab實現

尤拉計劃問題十matlab實現

Problem 10 :Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

思路 :

在前面的尤拉計劃問題七中我們已經對素數的概念有了一個理性的認識,眾所周知,matlab是一個功能很強大的軟體,裡面有很多的內構函式可以供我們使用,既然是工具,那麼我們一定要善加利用,今天我們使用matlab的isprime函式去解這個問題,isprime函式是matlab自帶的函式,可以供我們直接呼叫,來舉個例子:

比如說在matlab的命令視窗中輸入:isprime(7),那麼就會得到一個輸出:ans = logical(1),那麼很顯然這個數就是素數,再比如輸入:isprime(9),那麼得到的輸出就是:ans = logical(0),那麼這個數就不是素數。

isprime函式就像一個分類黑箱,扔進去一個數,如果是素數就輸出1,否則就輸出0,這就是計算機思維,經常受其薰陶,理工男基本上也是這個思維,面對什麼事情就是yes(1)   or   no(0) ,雖然很簡單粗暴,但是難免缺少了點人文情懷啊!

好的,言歸正傳,這個問題是讓我們求解兩百萬以下素數的和,那麼我們寫一個for迴圈,設定變數 i 從1到2000000,每迴圈一次就扔一個數進去,如果是素數,就加和,否則就下一個!直接上程式碼:

程式碼 : 

tic
sum = 0;
for i = 1:2000000
    if isprime(i) == logical(1);
        sum = sum +i;              %lterative summation
    end
end
toc
num2str(sum)

結果 : 142913828922

最後的num2str(sum)是為了讓matlab不要用科學計數法輸出,把它轉換為一個字串的形式輸出,便於我們直觀的觀看!希望大家有什麼想法可以一起交流一下!