如何计算给定范围内的素数总数
How to count total Prime numbers within a gven range
我试图找到一个范围内的素数(输入将由用户决定)和素数的总数。
我能找到质数,但无法完成计算质数的部分。
谁能帮我?
这是程序
#!/usr/bin/env python
import math
lower=input("lower value:")
upper=input("upper value:")
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else: print(num)
def count_prime(num,lower,upper):
count_prime= 0
for x in num:
if lower <= x <= upper:
count_prime += 1
print ( "count_prime:",count_prime )
结果输出如下(范围在10到100之间)
('prime numbers between', 10, 'and', 100, 'are:')
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
('count_prime:', )
最简单的方法是让一个变量在您每次找到素数时递增。因此,当您打印数字时,还要将该计数加一。您可以通过其他各种方式来做到这一点,即通过将每个素数保存在一个数组中然后计算元素的数量等。
与变量有关:
lower=input("lower value:")
upper=input("upper value:")
count = 0
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
count += 1
print ( "count_prime:", count )
与数组有关:
lower=input("lower value:")
upper=input("upper value:")
array = []
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
array.append(num)
print ( "count_prime:", len(array))
要计算质数的个数,可以先用一个列表存储质数,然后直接用len
求出质数的个数。这个很容易理解:
import math
store = []
lower=int(input("lower value:"))
upper=int(input("upper value:"))
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
store.append(num)
print("The number of prime numbers are:",len(store))
"sympy" 图书馆在这些情况下会很有帮助
import sympy
lower=int(input("lower value:")) #let it be 30
upper=int(input("upper value:")) #let it be 60
l=list(sympy.primerange(lower,upper+1)) #[31,37,41,43,47,53,59]
z=len(l)
print(z)
我找到了一些其他方法来计算在 中找到的素数这个例子你可以自定义你的列表。
def is_prime(n):
if n <= 1: # negative numbers, 0 or 1
return False
if n <= 3: # 2 and 3
return True
if n % 2 == 0 or n % 3 == 0:
return False
for i in range(5, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
ans = [i for i in input().split() if is_prime(int(i))]
print(len(ans))
或者,如果您想在范围内完成相同的任务,则只需编辑
input().split() 到 range(lower,upper+1)
ans = [i for i in range(lower,upper+1) if is_prime(i)]
print(len(ans))
我试图找到一个范围内的素数(输入将由用户决定)和素数的总数。
我能找到质数,但无法完成计算质数的部分。 谁能帮我? 这是程序
#!/usr/bin/env python
import math
lower=input("lower value:")
upper=input("upper value:")
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else: print(num)
def count_prime(num,lower,upper):
count_prime= 0
for x in num:
if lower <= x <= upper:
count_prime += 1
print ( "count_prime:",count_prime )
结果输出如下(范围在10到100之间)
('prime numbers between', 10, 'and', 100, 'are:') 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ('count_prime:', )
最简单的方法是让一个变量在您每次找到素数时递增。因此,当您打印数字时,还要将该计数加一。您可以通过其他各种方式来做到这一点,即通过将每个素数保存在一个数组中然后计算元素的数量等。
与变量有关:
lower=input("lower value:")
upper=input("upper value:")
count = 0
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
count += 1
print ( "count_prime:", count )
与数组有关:
lower=input("lower value:")
upper=input("upper value:")
array = []
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
array.append(num)
print ( "count_prime:", len(array))
要计算质数的个数,可以先用一个列表存储质数,然后直接用len
求出质数的个数。这个很容易理解:
import math
store = []
lower=int(input("lower value:"))
upper=int(input("upper value:"))
print("prime numbers between", lower,"and", upper, "are:")
for num in range (lower, upper+1):
if num>1:
for i in range (2,num):
if num % i==0:
break
else:
print(num)
store.append(num)
print("The number of prime numbers are:",len(store))
"sympy" 图书馆在这些情况下会很有帮助
import sympy
lower=int(input("lower value:")) #let it be 30
upper=int(input("upper value:")) #let it be 60
l=list(sympy.primerange(lower,upper+1)) #[31,37,41,43,47,53,59]
z=len(l)
print(z)
我找到了一些其他方法来计算在 中找到的素数这个例子你可以自定义你的列表。
def is_prime(n):
if n <= 1: # negative numbers, 0 or 1
return False
if n <= 3: # 2 and 3
return True
if n % 2 == 0 or n % 3 == 0:
return False
for i in range(5, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
ans = [i for i in input().split() if is_prime(int(i))]
print(len(ans))
或者,如果您想在范围内完成相同的任务,则只需编辑 input().split() 到 range(lower,upper+1)
ans = [i for i in range(lower,upper+1) if is_prime(i)]
print(len(ans))