1871神圣冲击小说:■■★★很简单的vb问题啊有25分!!正在等待!!马上给分!!

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 10:41:48
求素数时的程序
Function isprime(a As Integer) As Boolean
Dim j As Integer
isprime = False
For j = 2 To a / 2
If a Mod j = 0 Then Exit For
Next j
If j > a / 2 Then isprime = True
End Function
为什么只除一半?
例如:9
9分别要除1,2,3,4,5这几项6,8我都明白因为是2,4的倍数但为什么7没被试过呢? 不要告诉我9本来就除不开7,我是在问程序思路问题!谢谢

对于自然数N,能整除N的,并且大于N/2的数只有它本身
这就是原因

因为一个数除以大于它一半的数肯定小于2的,所以根本不用除

我认为你的程序有问题:
“For j = 2 To a / 2”应改为“For j = 2 To a \\ 2”
“If j > a / 2 Then isprime = True ”是不正确的,应直接赋值
“isprime = True”

关于只除一半,这是个数学问题:
设A,B为2个整数,且A > B,又A<>B
如果B > A/2
A/B =0.xxxx
没有整除的可能性,不必浪费时间