简体   繁体   English

查找范围内的质数

[英]Find prime numbers in range

def is_prime(number):
    for i in range(2, number):
        if number % 1 == 0 and number % i == 0:
            return False
        else:
            return True
print(is_prime(13))       
print(is_prime(55)) #True ##Why ???
def prime_numbers(a, b):
    lst = []
    for i in range(a,b+1):
        if is_prime(i):
            lst.append(i)
    return lst

print(prime_numbers(50, 100))

This is my code and suppose I have prime_numbers(50, 100) . 这是我的代码,并假设我有prime_numbers(50, 100)

It should return [53, 59, 61, 67, 71, 73, 79, 83, 89, 97] instead of 它应该返回[53, 59, 61, 67, 71, 73, 79, 83, 89, 97]而不是

[51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99] . [51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

So what is wrong with my code ? 那么我的代码有什么问题呢?

Relocate the return True line: 重新定位return True行:

def is_prime(number):
    for i in range(2, number):
        if number % 1 == 0 and number % i == 0:
            return False

    return True 


print(is_prime(13)) # True  
print(is_prime(55)) # False

Your code isn't working because you return True or False during the first iteration. 您的代码无法正常工作,因为您在第一次迭代中返回了TrueFalse

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM