【问题标题】:avoid for/else in this prime numbers generator function, use pure for loop避免在这个素数生成器函数中使用 for/else,使用纯 for 循环
【发布时间】:2021-03-30 04:14:34
【问题描述】:

我正在做一个关于生成素数的练习。

尽管我已经找到了解决这个问题的办法。我想知道我是否不知道或想要使用 for/else 循环。我怎样才能只使用 for 循环。

def genPrimes(): 
    primes = [] # primes generated so far 
    last = 1 # last number tried 
    while True: 
        last += 1 
        for p in primes: 
            if last % p == 0: 
                break 
        else: 
            primes.append(last) 
            yield last

【问题讨论】:

  • 你可以设置一个标志。

标签: python primes


【解决方案1】:

如果您愿意,可以使用递归函数:

def prime_number(n, d):
    if n//2 < d:
      return True
    if n%d == 0:
      return False
    return prime_number(n, d+1)

def find_primes(n,i, result):
  if i == n + 1:
    return result
  if prime_number(i, 2):
    result.append(i)
  return find_primes(n, i+1, result)

print(find_primes(100,2, []))

在这里使用循环更好,因为它更简单并且可以避免堆栈溢出;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2020-03-02
    • 2018-05-26
    • 1970-01-01
    • 2022-01-08
    • 2014-07-17
    • 2013-05-28
    相关资源
    最近更新 更多