输入两个正整数a和b,输出a与b范围内的所有素数
时间: 2024-10-20 16:07:50 浏览: 93
输入两个正整数a和b,范围内的所有素数是指在a到b之间的自然数(包括a和b本身),只有1和它自身能够整除的数。要找到这个范围内所有的素数,可以编写一个简单的算法,如埃拉托斯特尼筛法(Sieve of Eratosthenes):
1. 创建一个布尔数组isPrime,大小为b+1,并将所有元素初始化为true,表示默认认为每个数都是素数。
2. 遍历从2到sqrt(b),对于每个素数p,将isPrime[p]设为false,并标记p的倍数(除了p本身)也为非素数。
3. 然后找出数组isPrime中值为true的位置,它们对应的数字就是范围内的素数。
以下是Python的一个简单实现:
```python
import math
def find_primes_in_range(a, b):
is_prime = [True] * (b + 1)
is_prime[0], is_prime[1] = False, False
for p in range(2, int(math.sqrt(b)) + 1):
if is_prime[p]:
for i in range(p*p, b + 1, p):
is_prime[i] = False
primes = [i for i, prime in enumerate(is_prime) if prime and a <= i <= b]
return primes
# 示例
a, b = 10, 30
primes_in_range = find_primes_in_range(a, b)
print(f"在 {a} 到 {b} 范围内的素数有:", primes_in_range)
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)