m0_62660799 2021-10-06 14:31 采纳率: 100%
浏览 83
已结题

用python求给定范围内的素数,请大家帮我看看代码有什么问题

手机编辑的,对齐有点问题。建议拉到后面看图。

def primenumber(i, j):
s = 2
t = 0
prime=[]
for r in range(i,j):
if r==1:
continue
if r==2:
prime.append(r)
else:
for s in range(2,r):
if (r%s!=0):
t+=1
s+=1
if t==(r-2):
prime.append(r)
return prime

def main():
print("请输入第一个数:")
first=int(input())
print("请输入最后一个数:")
last = int(input())
print("[%d,%d)范围内的素数有:"%(first,last),primenumber(first,last))

if name=="main":
main()

img

img

展开全部

  • 写回答

1条回答 默认 最新

  • 微笑的菜鸟 2021-10-06 15:57
    关注

    按你的思路来调整下 s,t这块调整如下

    
    def primenumber(i, j):
        prime = []
        for r in range(i, j + 1):
            if r == 1:
                continue
            elif r == 2:
                prime.append(2)
            else:
                for s in range(2, r):
                    # 能被整除就不是素数,结束循环继续判断下一个数
                    if r % s == 0:
                        break
                    # 循环结束了还没被整除,就是素数了
                    if s == r - 1:
                        prime.append(r)
        return prime
    
    
    def main():
        first = int(input("请输入第一个数:"))
        last = int(input("请输入最后一个数:"))
        print("[%d,%d]范围内的素数有:" % (first, last), primenumber(first, last))
    
    
    if __name__ == "__main__":
        main()
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    m0_62660799 2021-10-06 18:19

    谢谢指点!我弄太复杂了......但还是想问一下这样为什么结果是错的,加了一下注释

            else:
                for s in range(2,r):
                    # 如果r不能被s整除,计数加一
                    if (r%s!=0):
                        t+=1
                    # 如果能整除,结束本次循环
                    else:
                        break
                # 如果循环结束,计数为r-2(即从2到r-1都不能整除),则这个数是素数,如r=7,t=5
                if t==(r-2):
                    prime.append(r)
    

    img

    img

    回复
    微笑的菜鸟 回复 m0_62660799 2021-10-07 00:15

    t=0放到第一层循环,不然会一直叠加

    img

    回复
    m0_62660799 回复 微笑的菜鸟 2021-10-07 03:17

    叠加是什么意思啊_(:з」∠)_

    回复
    展开全部5条评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月7日
  • 修改了问题 10月6日
  • 修改了问题 10月6日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部