【问题标题】:Python script to find nth prime number查找第 n 个素数的 Python 脚本
【发布时间】:2017-12-31 01:55:44
【问题描述】:

我是 Python 新手,我想通过编写一个函数来查找第 n 个素数来尝试学习一些技巧,但是我无法让我的代码正常工作。毫无疑问,这是因为我遗漏了一些基本的东西,但如果您能帮助我找出问题所在,我将不胜感激!

c=2
n=input("Which prime would you like? ")
n=int(n)
a=[]
l=len(a)

while l<=n:
    if c==2:
        a.append(c)
    elif (c % 2 ==0): #c is even
        break
    elif (c % 2 !=0): #c is odd
        if c<7:
            a.append(c)
        elif c >=7:
            for i in range(3,int((c+1)/2)):
                if (c % i ==0):
                    break
            else:
                a.append(c)
    else:            
        c+=1
a[n]

谢谢! 安德鲁

【问题讨论】:

  • 对于初学者来说,ln 在循环内都不会改变,那么循环条件将如何成为False
  • 你必须在循环中调用l=len(a),然后检查是否l &lt;= n。或者只是删除l=len(a) 并将while l&lt;=n 替换为while len(a)&lt;=n
  • 每个整数要么是奇数要么是偶数,因此永远不会执行最终的else: c+=1
  • 谢谢大家,所有非常有用的建议!

标签: python if-statement range primes factoring


【解决方案1】:

这可以是一个开始。这将检查数字 N 是否可以被从 2int(sqrt(N)) + 1 的所有数字整除,其中 int 函数截断 N 的平方根。如果列表的所有成员,python 中的 all() 函数返回 True满足某些条件(这里不是零)。您应该设置一个上限,因为这对于非常大的n 不是很有效。我会把它留给你。

def nthprime(n):
    import math
    start = 2
    count = 0
    while True:
        if all([start % i for i in range(2, int(math.sqrt(start)) + 1)]) != 0:
            count += 1
            if count == n:
                return start
        start += 1 



In [91]: nthprime(50)
Out[91]: 229

In [92]: nthprime(100)
Out[92]: 541

this测试。

【讨论】:

  • 不客气!如果此答案解决了您的问题,您可以将其标记为已接受(将注册)。
【解决方案2】:

这样试试?

print 2

for i in range(3,1000):

    b = False
    for j in range(2,i):
            if i % j == 0:
                b=True

    if b == False:
        print i

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 2016-02-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2012-01-07
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多