首页 > 解决方案 > 程序告诉我们在 100 到 10000 之间的 100 的哪个周期有最多的素数

问题描述

我想编写一个程序来告诉我们在 100 到 10000 之间的哪个 100 周期(那么是 100 到 200 还是 200 到 300 等等的哪百个类别)具有最多的素数。我不知道如何解决这个问题并对数百个进行分类,我知道如何判断两点之间有多少个素数,但是如何在计算每百个之间的素数时迭代 100 到 10000 个。感谢您的时间。

标签: pythonprimes

解决方案


我写了一个非常简单的程序,可以按照您的要求进行操作,我们在 100-199、200-299 等范围内进行迭代。在每个范围内,我们计算素数的数量。每次我们找到比我们保存的最大值更多的素数时——我们改变那个最大值并保存我们找到那么多的范围。

代码:

import math
def is_prime(x):
    #for num in range(2, int(x**0.5) + 1):
    for num in range(2, int(math.sqrt(x)) + 1):
        if x % num == 0:
            return False
    return True

def find_maximum_range_with_primes():
    max_range = None
    max_counter = 0

    # 10 ranges total: 100-200, 200-300, ...
    for j in range(1, 10):
        counter = 0

        # count primes in range
        for i in range(100*j ,100*(j+1)):
            
            if is_prime(i):
                counter += 1
                #print(i) 

        # if current range has more primes than the maximum found
        # set maximum to hole the counter, and save the range
        
        if counter > max_counter:
            max_counter = counter
            max_range = (100*j, 100*(j+1))
    return max_range

print(find_maximum_range_with_primes())
            

现在,这段代码没有优化,所以请注意有办法让它变得更好,但对于你所问的,我相信它会达到它的目的。


推荐阅读