✔ 最佳答案
方法一: 這是比較常用的方法, 其實可以不用Array, 但你指明要用, 所以先將答案放到Array A中, 最後再印出來, 裡面的i是2--10000的數, 每次求i是否質數, 而j則由2--i開方去試, 看看能否除得盡i, 如果其中一次可以除得盡i, 則i不是質數, 以break指令中止j循環, 因為再試都沒意思。最後如果is_prime沒有變成false, 即是從沒有數可以除得盡i, 那麼i就是質數, 把它記入Array中, t表示目前找到多少個質數。其實既然用array做, 其實可以進一步優化的, 但太難說明, 而且莫說一般中學生, 就算係一般大學生都唔會要求咁做, 所以就唔講了。
圖片參考:
http://i7.tinypic.com/4lshv9u.jpg
方法二: 這叫篩選法, 是一定要用array的方法, 亦是最快速度的求質數的方法之一, 方法是把10000之內的數都做個記號, 表示該數是否則數, 例如2是質數,則將2的所有倍數都設為false, 即不是質數, 然後找到3仍是質數, 又把3的所有倍數都定為false, 再之後4已經是false, 不是質數, 之後是5, 5是true, 所以是質數, 又把5的所有倍數都設成false, 如此類推, 直到10000的開方為止, 則Array的第1---10000格裡, 只要是true的就是質數, 是false的就不是質數。
圖片參考:
http://i5.tinypic.com/638mkcj.jpg
由於直接貼程式上來, 有d字會變成怪符號, 所以貼圖。
2007-05-22 12:02:50 補充:
上面位網友的答案, 根本就解答唔到發問者的問題, 佢只係一個分別用Function和procedure求質數的例子, 但睇黎呢位發問者都係打完斎唔要和尚果種人, 完全唔處理, 之後交投票, 投票都係我蝕, 所以我覺得問程式功課d人係最.....的。以後都係少答為妙, 或者隨便在網上複制算數,無謂浪費時間去寫程式, 好心冇好報!
2007-05-22 12:04:46 補充:
講真, 投票有幾多個係Pascal的行家....。