打字猴:1.70041481e+09
1700414810
1700414811 顺序查找              检索数据
1700414812
1700414813 二分查找              检索数据
1700414814
1700414815 哈希查找              检索数据
1700414816
1700414817 冒泡排序              数据排序
1700414818
1700414819 快速排序              数据排序
1700414820
1700414821 再试着思考一个具体问题吧。这次请思考一下解决“求解12和42的最小公倍数”这个问题的算法。所谓最小公倍数就是指两个整数的公共倍数(是一个数几倍的数)中最小的那个数。最小公倍数的求解方法在中学的数学课上应该学过了,但很可惜求解步骤是依赖人类的直觉的。请再思考一个适用于计算机的机械的算法。说不定会想“反正会有经典算法的吧,比如‘某某法’,然后就纠结于是否还要自己思考。
1700414822
1700414823 但即使查了算法辞典之类的书,也还是找不到求解最小公倍数的算法。为什么呢?因为我们可以通过以下方法求解最小公倍数–用两个整数的乘积除以这两个整数的最大公约数,因此12和42的最小公倍数就是12*42/6=84了。如此简单的算法不能算典型算法,这个例子说明先自己思考算法,再云应用典型算法这一点很重要。
1700414824
1700414825
1700414826
1700414827
1700414828 计算机是怎样跑起来的 [:1700412662]
1700414829 计算机是怎样跑起来的 5.5 要点4:利用计算机的处理速度
1700414830
1700414831 这次再请思考求解“判定91是否是素数”这一问题的算法。在用于判定素数的典型算法中,有一个被称为“埃拉托斯特尼筛选法”的算法,在学习这个算法前,先请思考如果是在数学考试中遇到这道题,如何解答呢?
1700414832
1700414833 也许有人会这样想:用91分别除以比较它小的所有正整数,如果没有找到能够整除的数,那么91就是素数。但,如此繁琐的步骤可行吗?实际上这就是正确答案。埃拉托斯特尼筛选法是一种用于把某个范围内的所有素数筛选出来的算法,比如筛选100以内的所有素数,其基本思路就是用待判定的数除以比较它小的所有正整数。例如要判定91是否是素数,只要分别除以2-90之间的每个数就可以了(因为1肯定能够整除任何数,所以从2开始检测)。这个步骤用程序表示的话,就变成了如代码清单5.2所示的代码。Mod是用于求除法运算中余数的运算符。如果余数为0则表示可以整除,因此也就知道待判定的数不是素数了,程序执行结果如图5.4所示
1700414834
1700414835 代码清单5.2 判定是否是素数的程序
1700414836
1700414837 a=91
1700414838
1700414839 s=”素数”
1700414840
1700414841 For i=2 to (a-1)
1700414842
1700414843   If a Mod i =0 Then
1700414844
1700414845 s=”不是素数”
1700414846
1700414847 Exit For
1700414848
1700414849   End If
1700414850
1700414851 Next
1700414852
1700414853 MsgBox CStr(a)&s
1700414854
1700414855 图5.4 代码清单5.2的执行结果
1700414856
1700414857
1700414858
1700414859
[ 上一页 ]  [ :1.70041481e+09 ]  [ 下一页 ]