想写一个函数判断一个数是否为素数,为什么我写的这个没有输出呢?
2 回答
onemoo
TA贡献883条经验 获得超454个赞
fun 函数是用来判断素数的?
首先,根据 for 循环的控制条件,参数 n 如果小于 2,则 for 循环根本不会开始循环,函数直接返回。
如果 n 够大,才会执行 for 循环。你在其中尝试将参数 n 与其他数相除,每次 13 行 if 判断时:
如果找到能除尽的就跳出循环了(14行),然后 fun 函数就结束了,什么也不会输出。
如果遇到没有除尽的,则执行 15 行的 if 语句。同样因为 for 的控制条件,i 一定是小于 n 的,所以一定会进入 else 分支,输出 no。 也就是说只要输入 n 大于 2,那么在确定它不是素数之前会输入一串 no...
以上这个逻辑根本就没法判断素数啊!
更重要的问题在:
第 26 行调用 fun 时传入的 n 是第 24 行的那个,然而这个 n 在定义时并没有赋予初值,那它的初值是随机的。 input 中接收输入的那个 n 是 input 的局部变量,和 26 行传入 fun 的无关。所以不管你输入了什么数,都和 fun 没关系。
虽然这个 n 初值是随机的,但多数情况下也可能会是 0。这时候 fun 直接就返回了,所以什么输出也没有。 这应该是你看到的结果。
顺便再强调一下:这样未赋予初值的局部变量的初值是不确定的,千万不要以为一定会是 0。
- 2 回答
- 0 关注
- 1096 浏览
添加回答
举报
0/150
提交
取消