作业帮 > 数学 > 作业

vf求素数问题求1到100间的素数,我看到用了这样的语句for i = 2 to 100for j = 1 to sqr

来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/04/30 02:26:08
vf求素数问题
求1到100间的素数,我看到用了这样的语句
for i = 2 to 100
for j = 1 to sqrt(i)
最后一条语句有什么用?求平方根和素数有关系吗?
vf求素数问题求1到100间的素数,我看到用了这样的语句for i = 2 to 100for j = 1 to sqr
有误吧?应该是for j = 2 to sqrt(i)吧?用1去除一个数有何意义?
比如i=100,那我们就用2~10(sqrt(100)=10)去除100,看其中是否有被整除的情况.因为用大于10的数去除100已没有必要了,比如用20除100得5,而已经做过100÷5(5在10以内)=20了……这样可节约大量代码运行时间!当然你用2~100去除,逻辑上是没错的!
再问: 没看明白。。。 求素数为什么要用到开方?
再答: 素数就是除了它自身和1能整除而不能被其他整数整除的数。比如30这个数,你用2去除、3去除...一直到用29除,有这个必要吗?把30开平方得整数5,就用2、3、4、5去除就够了,没有必要再用6~29这些数去除了,看省了多少事!因为用大于5的数(比如6)除的话得数就是5,而用5除的过程已经做过了……30÷5=6和30÷6=5都是整除,做一个就可以了,节约运行时间啊!再如判断100是不是素数,就用2~10(100开平方为10)去除,没有必要再用11~99去除了,省了多少时间啊!
再问: 还是不太明白,能说下原理吗?
再答: 一个数是它的两个平方根之积,用它的平方根取整去除它就行了,为什么还要用比它的平方根大的数去除呢,这不是白做工作吗?