python求300~400以内最大素数
时间: 2023-06-29 09:10:22 浏览: 109
可以使用以下代码来求解:
```python
def is_prime(num):
"""
判断是否为素数
"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
max_prime = -1
for i in range(300, 401):
if is_prime(i):
max_prime = i
print(max_prime)
```
输出结果为 397,即 300~400 之间最大的素数。
相关问题
用python求出100~ 10000以内的回文素数。
以下是用 Python 求出 100~10000 以内的回文素数的代码:
```python
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 is_palindrome(n):
return str(n) == str(n)[::-1]
for i in range(100, 10000):
if is_prime(i) and is_palindrome(i):
print(i)
```
这段代码首先定义了两个函数,`is_prime` 用于判断一个数是否为素数,`is_palindrome` 用于判断一个数是否为回文数。然后使用循环遍历 100~10000 之间的所有数,如果同时满足是素数和回文数,则输出该数。
用埃氏筛法求2~100以内的素数
以下是Python代码实现:
```python
def sieve_of_eratosthenes(n):
prime = [True] * (n+1)
prime[0] = prime[1] = False
for i in range(2, int(n**0.5)+1):
if prime[i]:
for j in range(i*i, n+1, i):
prime[j] = False
return [i for i in range(n+1) if prime[i]]
primes = sieve_of_eratosthenes(100)
print(primes)
```
输出结果为:
```
[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]
```
解释一下上述代码的实现:
1. 创建一个长度为n+1的布尔数组prime,用来标记每个数是否为素数。默认设为True。
2. 将0和1标记为False,因为它们不是素数。
3. 从2开始,遍历到$\sqrt{n}$,如果当前数i是素数(即prime[i]为True),则将i的倍数全部标记为False。这里从$i*i$开始是因为小于$i$的倍数已经被之前的数标记过了,不需要再次标记。
4. 最后,遍历整个数组,将所有标记为True的数加入到结果列表中,即为2到n之间的所有素数。
阅读全文