VB求素数~

来源:百度知道 编辑:UC知道 时间:2024/05/30 21:01:03
private function fun1(a as integer )as boolean
fun1=true
for i=2to sqr(n)
if n/i = int(n/i) then fun1 = false :exit for
next i
end function
请问为什么用到了逻辑变量,还有能不能详细的说下过程~谢谢~这个求素数用了什么原理哈.~我是新手~

'是一个判断是否是素数的函数,函数的输出值是一个逻辑性变量,也就是是true还是false
private function fun1(a as integer )as boolean
'首先假定这个数是素数
fun1=true
'循环检测,这里的sqr(n)是这个数的平方根,这样做的目的是减少循环次数(注意2和to间有空格)
for i=2 to sqr(n)
'判断这个数是否是素数,其中 n/i = int(n/i) 是一个判断条件(这个条件同样可以用 n/i=n\i 其中n\i是整除的意思),n/i是除,int(n/i) 是取整,比如3/2=1.5,int(3/2)=1,如果这个条件成立,那么这个数就不是素数,fun1 = false,已经确定是素数,那么exit for退出循环
if n/i = int(n/i) then fun1 = false :exit for
'其他就不一一解释了。
next i
end function

原理:已知一个数N
让它去除以从2 到它的平方根的数
如果其中有任何一个数能除尽 则它不是素数
否则它就是素数

为什么是它的平方根呢 因为如果在这个范围内没有因数的话
那从平方根到它自己也一定没有因数

n/i = int(n/i) 检测是不是整数
你想 1.1肯定不等于1 ,1.0就等于1

为什么逻辑变量
这里覆一个TRUE给这个函数 意思是默认N为素数
if n/i = int(n/i) then fun1 = false 没因数的话就是素数返回FALSE

素数就是质数,它和合数是对立的。
也就是约数是只有1和本身。