读不懂这两段代码的结果

img


不太理解,这两段代码执行下去,为什么是两个5,然后是3个97呀,读不懂

图片的执行结果应该是第二段程序的执行结果,它省略了中间的一些输出数字。

第二段程序执行的结果是满足以下条件的数:首先是在2到99之间,然后如果大于2且小于它自身的数从头开始有一个不能整除它的,则输出这个数(2除外),但是如果有整除的则不输出,满足这个条件的数输出的个数是从2开始且小于它自身,有几个连续不能整除它的数。

例如:3这个数,小于它的数只有2, 2不能整除3,则3输出1次。

4,小于它的有:2,3,从2开始判断,2可以整除4,if满足,break退出循环,4就没有输出了。

然后5, 小于它的数有:2,3,4 ,从2开始判断,2,3,4都不能整除5,if都没执行,后面的输出就执行了3次,所以5就输出了3次。

所以,当前的数,从2开始且小于它自身,有几个连续不能整除它的数,这个数就输出几次。

第一段执行的结果是输出2到99之间所有的数,每行一个。

注释如下:


print("第一段的结果为:")
# 第一段代码
for n in range(2,100):  # 遍历2到99之间的每一个整数

    if n==2:  # 如果当前的数等于2,则打印它,然后开始下一个数
        print(n)
        continue

    # 这个循环没有很多实际作用,因为if判断后没有进行输出
    for i in range (2,n): # 遍历2到n-1之间的每一个数
        if (n%i)==0: # 如果n可以整除这区间的每一个数,则退出循环
            break
   # 打印n的值  ,因为前面这个for循环对输出产生影响,所以这里就会直接打印出2到99之间的每一个整数   
    print(n)    

print("\n第二段的结果为:")
# 第二段代码
for n in range(2,100):  # 遍历2到99之间的每一个整数

    if n==2:  # 如果n等于2,则打印它,然后开始判断下一个数
        print(n)
        continue
    for i in range (2,n): # 遍历2到n-1之间的每一个数
        
        # 如果n可以整除区间的任意一个数,则退出循环
        if (n%i)==0: 
            break
        
        # 如果当前区间的数不能整除n,则输出n
        print(n)    

img