資訊內容
用Scratch巧解數學題——判定質數
給你一個大于1的自然數,請判斷它是合數還是質數!比如,99991是質數還是合數?
我們知道,質數就是只有1和它自身兩個因數的數。因此,要判斷一個大于1的自然數n是不是質數,最簡單的辦法就是看n能不能被2~n-1中的某個數整除。只要有一個數能被n整除,n就是合數;如果都不能被n整除,n就是質數。比如97,我們就看它能不能被2~96中的某一個數整除。
這個方法說起來很簡單,但是如果給出的數較大,實際算起來就沒那么簡單!比如,99991。再比如,1234567891。通過人工計算來判斷出它們是質數還是合數,那真不是一件容易的事。
能不能編一個程序讓計算機來幫助我們計算呢?當然可以!根據上述算法就可以畫出程序流程圖。
有了流程圖,編寫代碼就很簡單了。流程圖就是編程的施工圖。學習編程,畫流程圖是基本功。一定要養(yǎng)成無流程圖不寫代碼的好習慣!流程圖本身就是編程思路的體現,通過畫流程圖也可以進一步整理我們的思路。
程序寫好后,還要調試,看看功能是否正常。通過調試,我們會發(fā)現對于不太大的數,這個程序很快就能給出結果,簡直是秒殺!但如果你輸入1234567891,程序運行很久才會出結果。這種狀況,其實也是不能接受的。正如你玩一個游戲,它老是卡頓,你還會玩嗎?一個好的程序,只考慮功能的正確性是不夠的,還要考慮它的運行速度,它占用計算機內存的情況。當然,這是對高級程序員的要求。我們在學習編程的時候,更多地還是考慮功能的正確性。
運行速度過慢,怎么辦?重新設計呀!太慢,嚴格來講就是不符合設計要求。你必須重新考慮程序的架構和實現算法。
要判定一個數n是不是質數其實不需要一直試到n-1,到n的算術平方根(要取整,絕大多數程序設計語言都有取整運算符或者功能塊)就可以了!其流程圖與之前的算法基本相同,不再贅述。直接上程序代碼。
運行程序,按照提示輸入1234567891。程序很快就給出結果了。由此可見,在編程中,算法是很重要的。隨著學習的深入和編制的程序越來越復雜,我們就能更深地體會到:算法是程序的靈魂。
計算機是不是很強大呀!但前提是你要會編程呀!只有會編程,你才能讓計算機替你解決問題呀!別擔心,編程其實也沒有想象那么難!只要你愿意學。
Scratch雖然是專門為少兒設計的編程語言,但其功能還是非常強大的,不僅可以創(chuàng)建動畫、游戲和故事書,還可以用來求解數學題,實現一些數學算法。學過Scratch后,將來再學習其他高級程序設計語言,理解起來也會更加順暢,更加容易!
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯(lián)系刪除
