求1-1000之间质数的个数。python
时间: 2024-10-09 17:07:09 浏览: 25
在Python中,我们可以使用一种称为“埃拉托斯特尼筛法”(Sieve of Eratosthenes)的经典算法来找出1到1000之间的所有质数。以下是实现这个算法的一个简单版本:
```python
def count_primes(n):
primes = [True] * (n + 1) # 初始化所有数字为质数
primes[0], primes[1] = False, False # 0和1不是质数
for num in range(2, int(n**0.5) + 1): # 只需要检查到√n即可
if primes[num]:
for i in range(num*num, n+1, num): # 把num的倍数标记为非质数
primes[i] = False
# 统计并返回质数个数
count = len([i for i in range(2, n+1) if primes[i]])
return count
print(count_primes(1000))
```
这段代码会计算出1到1000之间有多少个质数,并打印结果。注意,为了效率,我们只检查每个数及其小于它的平方根的倍数,因为大于该数的因子必定有一个小于等于它本身的平方根。
相关问题
python求2-100000的质数的个数
以下是Python代码实现:
```python
import math
def is_prime(n):
if n <= 1:
return False
elif n <= 3:
return True
elif n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
count = 0
for i in range(2, 100001):
if is_prime(i):
count += 1
print(count)
```
运行结果为:9592
解释:2到100000之间共有9592个质数。
求0-100000以内素数的个数
这是一个典型的计算题,您可以使用埃氏筛法或欧拉筛法等算法来求解。我可以提供代码实现示例,如下所示:
```python
def count_primes(n):
is_prime = [True] * (n+1)
is_prime[0], is_prime[1] = False, False
count = 0
for i in range(2, n+1):
if is_prime[i]:
count += 1
for j in range(i*i, n+1, i):
is_prime[j] = False
return count
print(count_primes(100000))
```
执行以上代码,可以得到0-100000以内素数的个数为9592个。希望能够帮助到您!
阅读全文