[英]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) 在接受用户a
和b
的输入时,你没有关闭 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.