Python素数函数填充lis

2024-09-28 03:13:46 发布

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

所以我可以用一种更简单的方法来实现,但是我只是在用涉及列表的纯函数来练习,我无法实现。我知道我是在作弊,不提排除1之类的事情,也不通过只制表奇数来节省处理时间,这不是我的重点。指针?在

def is_prime(n):
    for i in range(2, n+1):
        if n % i == 0:
            return False
    return True

def listprimes_upto(n):
    result = []
    for i in range(2, n):
        if is_prime(i):
            result.append(i)
    return result

print(listprimes_upto(50))

(以下是更简单的非列表版本,效果很好):

^{pr2}$

Tags: 方法函数in列表forreturnifis
3条回答

你是错的。您必须使用range(2,n),否则您将始终从函数中获得False。因为,很明显,范围内的最后一个i将是n和{}。在

def is_prime(n):
    #                vvv n here, not n+1
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

Sieve of Eratosthenes - Finding Primes Python

埃拉托斯提尼筛法是寻找素数的一种更快的方法。在

this似乎是在Python中寻找素数的最快解决方案。本页还有许多其他实现函数的不同方法的示例,以查找质数,尽管这些示例中没有一个创建第二个is_素数函数,将其作为练习留给您去解决。在

试试这个,当你使用大数字时,效率是代码的10倍。在

def is_prime(n):
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

def listprimes_upto(n):
    result = []
    for i in range(2, n):
        if is_prime(i):
            result.append(i)
    return result

print(listprimes_upto(50))

相关问题 更多 >

    热门问题