关于用VB求素数的一个为什么。

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:31:52
大家都知道,素数就是质数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。
在VB中,判断一个数是不是素数是这样求的,举例:
dim ……
x=val(inputbox("请输入一个数")) '判断之数字
si = true
for i=2 to int(sqr(x))
if x mod i=0 then si=false
next i

if si=true then
print "素数!"
else
print "非素数!"
end if
关键就在这句话了——“for i=2 to int(sqr(x)) ”,为什么是到x的平方根的int为此呢?这不是与定义矛盾吗?谁能告诉我为什么呢?
int的意思我懂,我问的是为什么到它的平方根为此,高手来帮下我啊。
灌水的表来好吗?

非素数就是可以用两个非1的正整数相乘来代替
那么相乘的两个数必然一个小于本身开根号的数。应该说不大于本身开根号的数
所以循环到本身开根号的取整就够了
比如36,=2*18=3*12=4*9=6*6
你只要知道36从2~6之间有没有数能被36整除就可以了啊

举个例子,比如输入的数为100,你只需要判断100是否能被2到10之间的数整除就可以。
因为100=A*B嘛
当A在2到10之间的时候,B必然是在10到99之间,所以这个程序只需要判断到int(sqr(x))的值就可以。不需要从2到 X-1。

判断一个数是否为素数,就判断它能不能被比它小的素数整除,比如20,能整除的素数只有2和5,其他像4,10都是由2和5组成的。而有可能将一个数整除的素数必定<=这个数的平方根,所以判断到它的平方根为止

首先得明白这个算法,INT在此处为强行转换为整型,因为循环次数不可能用小数的