m0_73486986 2023-03-04 21:02 采纳率: 62.5%
浏览 263
已结题

输出100以内素数python

用python求100以内的素数,下面那个else我感觉是和if对应的,但是如果我把他俩对齐,100以内就有1590个素数,只有把else和第二个for对其才能算出对的值,真的不知道为啥一个空格差这么多,他这个两个程序运行的区别是啥,请您帮忙看看,真的感谢

for x in range(10):
    if x<2:
        continue
    for i in range(2,x):
        if x%i==0:
            break
    else:
            print(x)


  • 写回答

2条回答 默认 最新

  • 张卷地 2023-03-04 21:42
    关注

    在Python中,缩进非常重要。您的代码中缩进不正确,导致else语句在第一个for循环之后执行,而不是在第二个for循环之后执行。这会导致您的代码计算错误的素数数量。

    下面是缩进正确的代码:

    
    primes = []
    for num in range(2, 101):
        for i in range(2, num):
            if num % i == 0:
                break
        else:
            primes.append(num)
    
    print(primes)
    print(len(primes))
    
    

    在这个代码中,else语句与for循环对齐,这表示else语句是在for循环没有被中断的情况下执行的。在第二个for循环中,如果num可以被2~num-1中的任何一个数整除,则循环被中断,else语句不执行。如果循环完成后都没有中断,则说明num是素数,else语句执行,将num添加到primes列表中。

    如果在第一个for循环之后执行else语句,那么else语句就会在每次循环结束后执行,而不是在第二个for循环之后执行。这样,如果num是质数,else语句会在每次循环结束后都执行,导致primes列表中包含多个num。这就是为什么得到的素数数量比实际数量多的原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。