使用Python查找第n个质数

当我运行此代码时,即使只是算出第10个质数(而不是1000),我也会得到歪斜/中止的输出-

is_composite变量的所有“非质数”标题,我的test_num都给了我质数和复合数,而且我的prime_count已关闭

开发人员共享使用功能和数学导入的一些答案-我们尚未涵盖。我不是在寻求最有效的答案。我只是试图编写可行的python代码以了解循环的基础。


  # test a prime by diving number by previous sequence of number(s) (% == 0).  Do this by

# counting up from 1 all the way to 1000.

test_num = 2 #these are the numbers that are being tested for primality

is_composite = 'not prime' # will be counted by prime_count

prime_count = 0 #count the number of primes

while (prime_count<10): #counts number primes and make sures that loop stops after the 1000th prime (here: I am just running it to the tenth for quick testing)

test_num = test_num + 1 # starts with two, tested for primality and counted if so

x = test_num - 1 #denominator for prime equation

while (x>2):

if test_num%(x) == 0:

is_composite = 'not prime'

else:

prime_count = prime_count + 1

x = x - 1

print is_composite

print test_num

print prime_count

回答:

请参阅MIT提供的有关您的作业的提示。我在下面引用它们:

  1. 初始化一些状态变量

  2. 生成所有大于1的( )个整数作为质数的候选项

  3. 对于每个候选整数,测试其是否为质数

3.1。一种简单的方法是测试是否其他任何大于1的整数将余数为0的候选数均分。为此,可以使用

,例如,表达式a%b在将整数a除以整数b之后返回余数。

3.2。您可能会考虑需要将哪些整数作为除数进行检查–当然,您不必超出要检查的候选数,但是 ?

  1. 如果候选对象是素数,请打印一些信息,以便您知道计算中的位置,并更新状态变量

  2. 达到适当的结束条件时停止。在制定此条件时, 您的程序没有生成 。

它可能看起来像这样:

def primes(n):

# http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188

""" Returns a list of primes < n """

sieve = [True] * n

for i in xrange(3,int(n**0.5)+1,2):

if sieve[i]:

sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)

return [2] + [i for i in xrange(3,n,2) if sieve[i]]

以上是 使用Python查找第n个质数 的全部内容, 来源链接: utcz.com/qa/422121.html

回到顶部