m0_74236181 2023-03-23 20:38 采纳率: 66.7%
浏览 10

如何用数组输出1000到2000的素数

如何用数组输出1000到2000的素数,自己用for循环试了几次,但是每次电脑都报错,说访问冲突

  • 写回答

1条回答 默认 最新

  • IT_service_mesh 2023-03-23 21:03
    关注

    参考GPT和自己的思路:

    首先,我们需要定义一个布尔类型的数组,用于标记每个数是否为素数。由于我们需要输出1000到2000之间的素数,因此数组的大小应该为1001(包括1000和2000),对应的下标为0到1000。初始时,我们可以将所有的值都赋为true,因为我们假定所有的数都是素数。接下来我们可以写一个循环,从2开始遍历数组,将数组中不是素数的数的值赋为false。具体实现可以参考下面的代码:

    # 定义布尔类型的数组并初始化为True
    is_prime = [True] * 1001
    
    # 遍历数组,将非素数的数的值赋为False
    for i in range(2, 1001):
        if is_prime[i]:
            for j in range(2*i, 1001, i):
                is_prime[j] = False
    
    # 输出1000到2000之间的素数
    for i in range(1000, 2001):
        if is_prime[i - 1000]:
            print(i)
    

    以上代码中,我们先遍历数组,将非素数的数的值赋为False。具体的实现是,我们从2开始遍历数组,如果当前的数为素数,那么就将该数的倍数的值赋为False。这样遍历完数组之后,我们就得到了一个标记了素数和非素数的数组。接下来,我们再次遍历1000到2000之间的数,如果该数对应的数组元素为True,就说明它是素数,可以输出。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日