为什么i>n-1成立则n是素数?有点不能理解
vb吧
全部回复
仅看楼主
level 7
啊呜😺 楼主
为什么i>n-1成立则n是素数?有点不能理解
2020年08月22日 16点08分 1
吧务
level 13
假如 n = 97 ,那么 97 ÷ 2、97 ÷ 3 …… 97 ÷ 96 都除不尽,所以 97 是个素数。
虽然这种判断的次数多了一些,但许多教材上都是这样做的。
判断少一些的算法如下:
cc = CStr(n) & " 不是素数。"
If n <= 1 Then cc = CStr(n) & " 取值不合理。"
If n = 2 Then cc = CStr(n) & " 是素数。"
If n Mod 2 <> 0 And n > 2 Then
cc = CStr(n) & " 是素数。"
m = Int(Sqr(n) + 1)
For i = 3 To m Step 2
If n Mod i = 0 Then
cc = CStr(n) & " 不是素数。"
Exit For
End If
Next
End If
Print cc
2020年08月22日 20点08分 4
谢谢!
2020年08月23日 10点08分
level 15
跳出循环那一句的解释不完整,并不只是“没有必要再比较”这么简单,因为根据For循环的特性,如果循环正常执行结束,而不是中途跳出循环了,那么循环变量必然超过终值,比如这里就是i>n-1;也就是说,如果一个数是合数,那么就会中途跳出循环,于是i>n-1就不成立,否则(即这个数是素数),就有i>n-1
2020年08月23日 01点08分 5
谢谢!
2020年08月23日 02点08分
level 9
其实我觉得甚至可以i>n/2
2020年08月23日 06点08分 6
看4楼,循环终值最小可以是Sqr(n)
2020年08月23日 06点08分
1