使用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的( )个整数作为质数的候选项
对于每个候选整数,测试其是否为质数
3.1。一种简单的方法是测试是否其他任何大于1的整数将余数为0的候选数均分。为此,可以使用
,例如,表达式a%b在将整数a除以整数b之后返回余数。
3.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