少儿编程150讲轻松学Scratch(十一)-用Scratch巧解数学题——判定质数
前言
質數和合數是數學中的兩個基本概念,兩位數以內的質數和合數還比較好區分,位數一多,很多人就不太好判斷了,但如果借用工具的話,這個問題就比較容易得到解答了。通過Scratch編程,短短幾行代碼,我們就能判斷多位數是質數還是合數了。
判定規則
給你一個大于1的自然數,請判斷它是合數還是質數!比如,99991是質數還是合數?
我們知道,質數就是只有1和它自身兩個因數的數。因此,要判斷一個大于1的自然數n是不是質數,簡單的辦法就是看n能不能被2n-1中的某個數整除。只要有一個數能被n整除,n就是合數;如果都不能被n整除,n就是質數。比如97,我們就看它能不能被296中的某一個數整除。
這個方法說起來很簡單,但是如果給出的數較大,實際算起來就沒那么簡單!比如,99991。再比如,1234567891。通過人工計算來判斷出它們是質數還是合數,那真不是一件容易的事。
能不能編一個程序讓計算機來幫助我們計算呢?當然可以!根據上述算法就可以畫出程序流程圖。
編程
有了流程圖,編寫代碼就很簡單了。流程圖就是編程的施工圖。學習編程,畫流程圖是基本功。一定要養成無流程圖不寫代碼的好習慣!流程圖本身就是編程思路的體現,通過畫流程圖也可以進一步整理我們的思路。
程序寫好后,還要調試,看看功能是否正常。通過調試,我們會發現對于不太大的數,這個程序很快就能給出結果,簡直是秒殺!但如果你輸入1234567891,程序運行很久才會出結果。這種狀況,其實也是不能接受的。正如你玩一個游戲,它老是卡頓,你還會玩嗎?一個好的程序,只考慮功能的正確性是不夠的,還要考慮它的運行速度,它占用計算機內存的情況。當然,這是對高級程序員的要求。我們在學習編程的時候,更多地還是考慮功能的正確性。
程序改進方法
運行速度過慢,怎么辦?重新設計呀!太慢,嚴格來講就是不符合設計要求。你必須重新考慮程序的架構和實現算法。
要判定一個數n是不是質數其實不需要一直試到n-1,到n的算術平方根(要取整,絕大多數程序設計語言都有取整運算符或者功能塊)就可以了!其流程圖與之前的算法基本相同,不再贅述。直接上程序代碼。
改進后結果
運行程序,按照提示輸入1234567891。程序很快就給出結果了。由此可見,在編程中,算法是很重要的。隨著學習的深入和編制的程序越來越復雜,我們就能更深刻體會到:算法是程序的靈魂。
總結
以上是生活随笔為你收集整理的少儿编程150讲轻松学Scratch(十一)-用Scratch巧解数学题——判定质数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网-数据结构笔试题目(八)-离子能力
- 下一篇: 少儿编程150讲轻松学Scratch(十