作业帮 > 数学 > 作业

由第六行不懂啦,希望可以逐行解释一下,尤其是第十二行 为什么“if k>p

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:数学作业 时间:2024/05/05 19:20:31
由第六行不懂啦,希望可以逐行解释一下,尤其是第十二行 为什么“if k>p

”答得好我会再加分 在线等
由第六行不懂啦,希望可以逐行解释一下,尤其是第十二行 为什么“if k>p
clear && 清屏幕
input "输入终止数?" to m && 从键盘输入数字保存存到自定义变量m
i=2 && 自定义变量i=2
i && 显示i,第1个素数是【i=2】不用判断,直接(另起一行)显示
for i=3 to m step 2 && i从3开始到你输入的数字m,每次i+2
* 检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数.
* 参见素数判定法则---这里现成的理论问题,不用我们另外验证了吧?
p=int(sqrt(i)) && p=取整(平方根(i)),也就是:取整【i的平方根】,存到p
for k=2 to P && k从2开始,一直到P,每次i+1(默认的)
if i%k=0 && 如果i/k的余数=0【也就是能整除的话(能整除就不是素数)】,那么...
exit && 退出这个循环(里面这个)
endif
endfor && 接着上去继续
* 退出上面循环【for k=2 to P】有2种情况:
* 1、能整除则exit出来的,这时kp(实际值是:k=P+1)所以i是素数进入if
if k>p
i,"," && 在当前行显示i(不另起行了),并且再多显示一个“分隔逗号(,)”
endif
endfor
return
再问: 额 。。p=int(sqrt(i)) 然后 for k=2 to P 问题是p是i的开方取整,但是怎么保证 for k=2 to p 里的每 一个数都是i的开方取整呢? 还有for k=2 to p 不是表明k是在2到p之间 吗?为什么会有k>p的情况
再答: 问:怎么保证 for k=2 to p里的每一个数都是i的开方取整呢? 答:i在第二个循环开始就已经开方取整了 i在循环里一直没有重新赋值,它是一城不变的 只是每次去%k而已(k依次=2、3、4、5........p) * ------------------------------------- 问:还有for k=2 to p不是表明k是在2到p之间吗?为什么会有k>p的情况 你执行如下语句试试: for k=1 to 10 endfor ?a 看看a是不是=11?11是不是>10?k是不是>P?
再问: 第一个问明白啦,第二个问是什么原因
再答: * 我让你写个程序,执行以下语句,看看结果就知道了: for k=2 to 10 endfor ?k && k=11 * for/endfor只要不是exit退出的,完全执行完后,k肯定>P(这里我把P换成了10) * 这是for的基本工作原理,你去查查for怎么用,这个需要我继续解释吗?