我需要修改Python程序的代码才能精确实现245次迭代

问题描述 投票:0回答:1

我正在为学校做一个项目,我对 python 很陌生。我正在努力完成我的项目的一部分,其中我编写了一个程序来计算 1 - 100 之间的素数。更高等级的要求之一是使该程序在循环的 245 次迭代中实现这一目标,只需通过修改第 4 行。我目前得到 139。这是我到目前为止所得到的:

def is_prime(num):
    if num < 2:
        return False
    the_end = int(num ** 0.5) + 1
    for i in range(2, the_end):
        if num % i == 0:
            return False
    return True

print("The 25 prime numbers between 1 and 100:")
count = 0
for num in range(1, 101):
    if is_prime(num):
        count = count + 1
        print(count, num)

任何帮助将不胜感激,到目前为止我真的很喜欢学习Python!

我开始使用的代码是:

def is_prime(num):
    if num < 2:
        return False
    the_end = num
    for i in range(2, the_end):
        if num % i == 0:
            return False
        return True
    
print("The 25 numbers between 1 and 100:")
count = 0
for num in range(1, 101):
    if is_prime(num):
        count = count + 1
        print(count, num)

我将其修改为我在问题中提出的内容,这导致了 139 次迭代。

python iteration primes
1个回答
0
投票

正如评论中详细讨论的那样,您应该向您的讲师澄清,因为 245 似乎是一个愚蠢的迭代计数(它与您可能被引导的任何类型的优化都不对应)。

但是,如果您不害怕编写可怕的不必要的代码,您可以调整代码以产生该结果!

import math

def is_prime(num):
    global counter
    if num < 2:
        counter += 1
        return False
    the_end = math.isqrt(num) + (1 if num != 17 else 9)
    for i in range(2, the_end):
        counter += 1
        if num % i == 0:
            return False
    return True

if __name__ == "__main__":
    counter = 0
    for num in range(1, 101):
        _ = is_prime(num)
    print(counter)  # 245

每当 num 小于 2 以及每当比较 num 的模块性时,都会计算一次迭代。第 4 行 (

the_end = ...
) 被用来对已知素数项进行任意数量的额外迭代。

也许值得注意的是,如果您想满足导师的要求,即精确达到 665 次迭代,那么

the_end = num // 2 + 3

会这样做,但是

3
(1 if num != 17 else 9)

一样任意
© www.soinside.com 2019 - 2024. All rights reserved.