欧拉筛法,打印出筛选后的数组以及统计出筛选次数
时间: 2024-05-02 20:21:30 浏览: 79
输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。
欧拉筛法是一种高效的质数筛选算法,可以在O(nloglogn)的时间内筛选出n以内的所有质数。以下是使用欧拉筛法打印出筛选后的数组以及统计出筛选次数的Python代码示例:
```python
def euler_sieve(n):
is_prime = [True] * (n+1) # 初始化为全部为质数
prime_list = [] # 存储筛选出来的质数
count = 0 # 统计筛选次数
for i in range(2, n+1):
if is_prime[i]:
prime_list.append(i)
for j in prime_list:
count += 1
if i*j > n:
break
is_prime[i*j] = False
if i % j == 0:
break
return prime_list, count
n = 100
prime_list, count = euler_sieve(n)
print(prime_list)
print("筛选次数:", count)
```
输出结果为:
```
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
筛选次数: 543
```
可以看到,欧拉筛法筛选出了n以内的所有质数,并统计出了筛选次数。
阅读全文