【问题标题】:How else can I use the while-loop with the [included function] to sum only prime numbers from a given range?我还能如何使用带有 [included function] 的 while 循环来仅对给定范围内的素数求和?
【发布时间】:2016-08-26 16:59:53
【问题描述】:

我正在寻找在超过未知变量n 之前可以加在一起的特定质数数。 k 是素数的数量。 is_prime() 是一个函数,如果参数是素数则返回 True,否则返回 False。

我的尝试:

i = 1
total = 2
k = 0

while total <= n:
    i += 1
    if is_prime(i):
        k += 1
        total += i

随着n 的值变大,我的代码开始不起作用。我希望k 只会在is_prime 返回True 时增加,而total 将是一个运行总数,以确保素数的总和不超过n。 如何使用 while 循环、for 循环或 if/elif/else 解决这个问题,而不使用其他函数,例如 sum()?

【问题讨论】:

  • 不工作怎么办?我觉得很好。时间会不会太长?也许is_prime 太慢了,它是如何工作的?您也可以每次将i 增加 2 以加快速度。你应该从i = 3 开始,因为total = 2 开始。

标签: python loops python-3.x while-loop primes


【解决方案1】:

假设is_prime 实际上做了它应该做的事情,你的代码似乎没有问题。也许你的n 太大了,寻找足够的素数来达到 n 花了太长时间。

如果出现任何错误,您应该指定它们,除此之外,我真的看不出代码有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2016-10-15
    相关资源
    最近更新 更多