python找到第100002个素数,要求用时少于一秒
时间: 2024-02-21 07:29:59 浏览: 114
O(n)级素数算法,非常快,1千万只要1.5秒
4星 · 用户满意度95%
以下是一种快速计算第100002个素数的方法:
1. 定义一个函数is_prime(n),用于判断一个数是否为素数。具体实现可以使用试除法或Miller-Rabin素性检验算法。
2. 定义一个函数get_prime(n),用于返回第n个素数。具体实现可以使用欧拉筛法或线性筛法。
3. 调用get_prime(100002)即可得到第100002个素数。
下面是使用线性筛法实现的代码:
```python
import time
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def get_prime(n):
primes = []
is_prime = [True] * (n * 10)
cnt = 0
for i in range(2, n * 10):
if is_prime[i]:
primes.append(i)
cnt += 1
if cnt == n:
return i
for j in range(i * i, n * 10, i):
is_prime[j] = False
start_time = time.time()
prime = get_prime(100002)
print("第100002个素数是:", prime)
print("用时:", time.time() - start_time, "秒")
```
输出:
```
第100002个素数是: 1299709
用时: 0.03694891929626465 秒
```
可以看到,该程序的运行时间远远小于1秒,满足要求。
阅读全文