Python算法n素数numb

2024-04-26 03:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

问题: 给定素数n,输出素数的个数

我的代码:

    def kthPrime(self, n):
            if n>10 and n%10 not in [1,3,7,9]:
                return 0
            if n == 2:
                return 1
            queue = []
            num = 2
            while num <= n:
                if n%num == 0 and num != n:
                    return 0
                if num>10 and num%10 not in [1,3,7,9]:
                    num += 1 
                    continue
                for i in range(2,num/2+1):
                    if num%i == 0:
                        num += 1 
                        break
                else:    
                    queue.append(num)
                    num += 1
            seq = queue.index(n) + 1
            return seq

错误: 你的代码运行的时间比我们预期的要长。检查你的时间复杂性。如果您的时间复杂度是最佳的,则超出时间限制通常由无限循环引起。你知道吗

我的问题是:如何改进


Tags: and代码inselfreturnifqueuedef
1条回答
网友
1楼 · 发布于 2024-04-26 03:32:10

正如用户@Prune所说,请先阅读指南。 我不会告诉你如何改进你的函数,但我会给你一个更快的方法来判断一个数是否是素数,希望你能理解如何使用我给你的函数来改进你自己的函数。 源代码:

class numChecker:
    def is_prime(self,n):
    if n == 2:
        return True
    if n % 2 == 0 or n < 2:
        return False

    self.square_root = int(n ** (1/2))

    for divisor in range(3, self.square_root + 1, +2):
        if n % divisor == 0:
            return False
    return True

相关问题 更多 >