motherboard是什么意思:为什么用所有不小于该整数的平方根的整数来除它就可以?

来源:百度文库 编辑:高校问答 时间:2024/05/06 04:35:24
以下程序用于在带垂直滚动条的文本框Text1中输出3到100之间的全部素数。
Private Sub Command1_Click()
Text1.Text = ""
For N = 3 To 100
k = Int(Sqr(N))
I = 2
flag = 0
Do While I <= k And flag = 0
If N Mod I = 0 Then flag = 1 Else I = I + 1
Loop
If flag = 0 Then
Text1.Text = Text1.Text & Chr(13) & Chr(10) & N
End If
Next N
End Sub

解题思路:
素数的特征是只能被1和它本身整除,换句话说就是不能被大于1且小于它本身的整数来整除。
根据这一特征,要检查一个整数是不是素数,可以用大于1而小于它的所有整数来除它,如果可以整除,就不是素数,否则就是素数。
在具体实现这一方法的时候,为了缩短程序运行时间,通常是用所有不小于该整数的平方根的整数来除它就可以。

我想问一下为什么用所有不小于该整数的平方根的整数来除它就可以呢?

这是一个数学上的概念
一个合数的最大质因子不大于它的平方根
如果一个数的质因子大于它的平方根,这个数就是素数

检查n是否质数,只要测到Int(sqr(n))就行了。因为如果d能带整除n(d大于Int(sqr(n)),那么n/d也能整除n,而n/d(n/d小于Int(sqr(n))已经在这之前被测过了。