【问题标题】:How can I display the first 25 prime numbers?如何显示前 25 个素数?
【发布时间】:2022-08-23 12:53:29
【问题描述】:

如何显示给定间隔中的前 25 个整数素数?我找不到将其限制为 25 个整数素数的方法。

minimum = 1000000000
maximum = 9999999999
print (\"The first 25 10-digit prime numbers are:\")
for num in range (minimum, maximum + 1):
    if num > 1:
        for i in range (2, num):
            if (num % i) == 0:
                break
    else:
        print(num)
  • 创建一个计数器变量可以解决这个问题。只需在print(num) 之前添加条件if counter>=25: break。并在循环成功完成时添加1
  • 只需创建一个迭代器并在 25 个数字后停止。查找 yield 关键字可能会很有启发性。
  • 一些性能提示:在测试素数时,1) 只测试高达 sqrt(num) 的除数和 2) 只测试 2 和奇数除数就足够了。

标签: python


【解决方案1】:

你必须使用一个计数器来存储你找到了多少质数。

minimum = 1000000000
maximum = 9999999999
print ("The first 25 10-digit prime numbers are:")
counter = 0
for num in range (minimum, maximum + 1):
    if counter == 25: break
    if num > 3:
        for i in range (2, int(num/2)): # for optimization
            if (num % i) == 0:
                break
        else:
            counter += 1
            print(counter,num)
    else:
        counter += 1
        print(counter,num)

这是更优化的代码,其中包含 cmets 中的提示:

import math
minimum = 1000000000
maximum = 9999999999
print ("The first 25 10-digit prime numbers are:")
counter = 0
for num in range (minimum, maximum + 1):
    if counter == 25: break
    if num > 3:
        if (num % 2) != 0:
            for i in range (3, math.ceil(math.sqrt(num)), 2):
                if (num % i) == 0:
                    break
            else:
                counter += 1
                print(counter,num)
    else:
        counter += 1
        print(counter,num)

【讨论】:

  • 对于范围内的 i (3, int(math.sqrt(num)), 2):数字 2 是什么?
  • 这是range 变量的步骤。它只迭代 3 中的奇数
【解决方案2】:

如果不出意外,您可以使用变量来跟踪您已打印的数量,并在达到 25 时使用外部循环中的break

这是一个示例,已添加到您的代码中。

minimum = 1000000000
maximum = 9999999999
printed = 0
print ("The first 25 10-digit prime numbers are:")
for num in range (minimum, maximum + 1):
    if num > 1:
        for i in range (2, num):
            if (num % i) == 0:
                break
    else:
        print(num)
        printed+= 1

    if printed >= 25:
        break

【讨论】:

  • 我是初学者,我该怎么做?
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • @A.Brusola 我已经更新了我的答案来演示。
【解决方案3】:

你可以试试这个。

from sympy import isprime
i=1
count = 0
while count < 25:
    if isprime(i):
        print(i)
        count += 1
    i += 1

【讨论】:

    【解决方案4】:

    你也可以试试这个:

    minimum = 10
    maximum = 999
    print ("The first 25 10-digit prime numbers are:")
    counter = 0
    for num in range (minimum, maximum + 1):
        if counter == 25: break
        for i in range (2, num):
            if (num % i) == 0:
                    break
        else:
            counter += 1
            print(counter,num)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2011-12-16
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多