|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼老师课后练习题及其答案如下:
找出 10 以内的所有素数,如果不是素数,请打印出该合数对应的乘积公式。
n = 2
while n < 10:
x = 2
while x < n:
if n % x == 0:
print(n, '=', x, '*', n//x)
break
x += 1
else:
print(n,"是一个素数.")
n += 1
这道题的答案是:
2 是一个素数.
3 是一个素数.
4 = 2 * 2
5 是一个素数.
6 = 2 * 3
7 是一个素数.
8 = 2 * 4
9 = 3 * 3
我把循环步骤梳理了以下,烦请大神帮忙看下我的逻辑是否正确:
1)n = 2, x =2
不执行while x < n 语句内的内容,执行else语句内的print语句,即打印2是一个素数,然后n变为3.
2)n = 3, x = 2
执行while x < n 语句内的内容, if n % x == 0条件不满足,不执行里面的print和break语句,后续执行x+=1,x变为3, 因x=3不再满足while x < n的要求,故退出内部循环,然后执行else语句内的print语句,即打印3是一个素数,然后n变为4.
3)n = 4, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件满足, 打印4 = 2*2, 然后执行break语句. 因为通过break语句跳出,故后面的else语句内容不执行,然后n变为5.
4)n = 5, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件不满足, 故不执行里面的print和break语句,后续执行x+=1,x变为3.
此时x=3,n=5,重新循环while x < n 语句,同理因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为4.
此时x = 4, n = 5, ,重新循环while x < n 语句,同样因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为5.
当x变为5时不再满足while x < n要求,故退出循环,执行else语句打印5是一个素数,然后n变为6.
5)n = 6, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件满足,打印6 = 2*3, ,然后执行break语句.因为通过break语句跳出,故后面的else语句内容不执行,然后n变为7.
6)n = 7, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件不满足, 故不执行里面的print和break语句,后续执行x+=1,x变为3.
此时x=3,n=7,重新循环while x < n 语句,同理因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为4.
此时x=4,n=7,重新循环while x < n 语句,同理因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为5.
此时x = 5, n = 7, ,重新循环while x < n 语句,同样因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为6.
此时x=6,n=7,重新循环while x < n 语句,同理因为if n % x == 0不满足, 不执行里面的print和break语句,后续执行x+=1,x变为7.
当x变为7时不再满足while x < n要求,故退出循环,执行else语句打印7是一个素数,然后n变为8.
7) n = 8, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件满足,打印8 = 2*4, ,然后执行break语句.因为通过break语句跳出,故后面的else语句内容不执行,然后n变为9.
8) n = 9, x = 2
x重新赋值变为2, 执行while x < n 语句内的内容, if n % x == 0条件不满足, 故不执行里面的print和break语句,后续执行x+=1,x变为3, 重新循环while x < n 语句,此时if n % x == 0满足, 打印9 = 3*3, , ,然后执行break语句.因为通过break语句跳出,故后面的else语句内容不执行,然后n变为10.
9) n = 10
当n = 10时, 最外部循环语句while n < 10不再被满足,故循环终止,程序结束.
|
|