繁体   English   中英

写一个Python程序打印一个区间内的所有质数?

[英]Write a Python program to print all prime numbers in an interval?

定义一个 function 接受两个整数(开始,结束)并将范围之间的数字分类为质数和非质数并打印质数

def is_prime(n):
    if n < 1: 
        return False 
    for i in range(2, n+1): 
        if n % i == 0: 
            return False 
    return True 
 
def print_primes(start, end): 
    for i in range(start, end): 
        if is_prime(i): 
            print(i) 
 
a=int(input("Start value: ")
b=int(input("End value: ")
print_primes(a,b) 
def is_prime(n): 
    if n < 2: 
        return False 
    for i in range(2, n): 
        if n % i == 0: 
            return False 
    return True 
 
def print_primes(start, end): 
    for i in range(start, end+1): 
        if is_prime(i): 
            print(i) 
 
a=int(input("Start value:")
b=int(input("End value:")
print_primes(a,b) 
def is_prime(n):
    if n < 1: 
        return False 
    for i in range(2, n+1):

它应该是:

def is_prime(n):
    if n < 1: 
        return False 
    for i in range(2, n):

它应该是 go 直到小于 n,否则n将始终被i整除并返回False

a=int(input("Start value:"))  # make sure to close the parenthesis
b=int(input("End value:"))    # make sure to close the parenthesis

修复了一些错误。

(1) 在接受用户ab的输入时,你没有关闭 round 参数

(2) is_prime() for 循环运行到n-1而不是运行到n

(3) 以可读性的方式存储答案。

代码:-

def is_prime(n):
    if n < 1: 
        return False 
    for i in range(2, n): 
        if n % i == 0: 
            return False 
    return True 
 
def print_primes(start, end):
    res=[]
    for i in range(start, end): 
        if is_prime(i): 
            res.append(i)
    return res
 
a=int(input("Start value: "))
b=int(input("End value: "))
print(print_primes(a,b)) 

Output:

Start value: 3
End value: 13
[3, 5, 7, 11]

如您所见,起始值是包含的,结束值是独占的,使两者都包含在内,只是在print_primes function 中迭代到end+1

这就考虑到了float in range的问题。 尝试一下。 :)

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

    
def print_primes(start, end):
    res=[]
    start=int(start)
    end=int(end)
    for i in range(start, end+1):
        if is_prime(i): 
            res.append(i)
    return res
    
#a=int(input("Start value: "))
#b=int(input("End value: "))
a=0.3
b=41
print_primes(a,b) 
#[3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41]

暂无
暂无

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

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