Nevar 发表于 2021-10-10 00:30:29

萌新求教!求各位大佬帮忙解答

感谢各位大佬点进帖子!
跟着小甲鱼的python视频学习了两天,自己尝试着写了一个求小于给出整数的所有质数列表的代码如下
def isprime(numb):
    if numb % 2 == 0:
      return 0
    else:
      count = 0
      for i in prime:
            if numb % i != 0:
                count += 1
      if count == len(prime):
            return 1
      else:
            return 0

temp = int(input('范围(大于1的整数):'))
num = 1
prime =
while (num <= temp):
    if isprime(num) == 1:
      prime.append(num)
    num = num+1
   
prime.remove(2)
print('质数:',prime)
print('数量:',len(prime))
   
但是不知道为什么这个代码跑不出来{:10_266:} 这样的话输出的结果prime列表里都只有这一个元素
但是如果把代码里的num(初始质数检测值)改成3就能正常输出结果了
百思不得其解不知道是为什么{:10_266:} 球球各位大佬帮忙解答了{:5_92:}

qq1151985918 发表于 2021-10-10 00:43:38

将 isprime 纯粹为一个判断函数,不要涉及外部全局的 prime 列表
def isprime(numb):
    if numb <= 1:
      return False
    for i in range(2, int(numb ** 0.5) + 1):
      if numb % i == 0:
            return False
    return True


temp = int(input('范围(大于1的整数):'))
num = 1
prime = []
while (num <= temp):
    if isprime(num):
      prime.append(num)
    num = num + 1

print('质数:',prime)
print('数量:',len(prime))

Nevar 发表于 2021-10-10 00:52:00

qq1151985918 发表于 2021-10-10 00:43
将 isprime 纯粹为一个判断函数,不要涉及外部全局的 prime 列表

感谢感谢!我已经知道问题出在哪里了,prime里面有1之后isprime就一直会返回0了

傻眼貓咪 发表于 2021-10-10 08:41:03

本帖最后由 傻眼貓咪 于 2021-10-10 08:44 编辑

def prime(num):
    return False if num<2 else True if num == 2 else all()

arr =

print(*arr) if arr else print("没有质数")输入任何整数:15
2 3 5 7 11 13

输入任何整数:-13
没有质数我的代码比较难理解,仅供参考,希望对你有帮助
(老师在课堂上所教导的都是基础,自己必须理解,活用,变化,才是真正学习之道)
页: [1]
查看完整版本: 萌新求教!求各位大佬帮忙解答