6 小白求助

找素数 这个代码为啥不行啊
for x in range(2,100):
    for factor in range(2,x):
        sum=0
        if x%factor!=0:
            sum+=1
    if sum==(x-2):
        print(x)


请先 登录 后评论

最佳答案 2021-09-23 23:04

  1. def prime(num):
  2.     def isPrime(num):
  3.         for i in range(2, num):
  4.             if num%i == 0:
  5.                 return False
  6.         return True
  7.     return [i for i in range(2, num) if isPrime(i)]

  8. n = 100 # 樣例
  9. print(prime(n)) # 列印出:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
复制代码
请先 登录 后评论

其它 4 个回答

瑶小兔M

懂了,谢谢你!
请先 登录 后评论
咪子喵子


判断求余数等于0的跳出就可以了。

  1. for x in range(2,100):
  2.     for factor in range(2,x):
  3.         if x % factor ==0:
  4.             break
  5.     else:
  6.         print(x)
复制代码
请先 登录 后评论
一个等待
for x in range(2,100):
? ? for factor in range(2,x):
? ?? ???if x % factor ==0:
? ?? ?? ?? ?break
? ? else:
       #说明: 如果没用break跳出循环,则会执行一次else语句。
? ?? ???print(x)
请先 登录 后评论
吃货玲洋


按照你的思路应该改成下面这样
for x in range(2,100):
    sum=0
    for factor in range(2,x):
        if x%factor!=0:
            sum+=1
    if sum==(x-2):
        print(x)

请先 登录 后评论
  • 5 关注
  • 0 收藏,391 浏览
  • 舵手 提出于 2021-09-23 23:04

相似问题