用户输入一个正整数N,计算并输出不大于N的最大素数
时间: 2023-05-31 10:05:13 浏览: 107
输入一个整数,判断2~n之间的素数并输出
4星 · 用户满意度95%
可以使用质数筛法来解决这个问题。具体步骤如下:
1. 创建一个长度为N+1的布尔数组isPrime,并初始化为全部为true。
2. 从2开始,循环遍历到根号N,对于每个数i,如果isPrime[i]为true,则将i的倍数(除了自己)全部标记为false,表示它们不是素数。
3. 循环结束后,再次遍历isPrime数组,找到最大的素数p,使得p<=N。输出p即可。
下面是Python代码实现:
```python
import math
def find_largest_prime(N):
# 初始化isPrime数组
isPrime = [True] * (N+1)
isPrime[0] = isPrime[1] = False
# 使用质数筛法标记非素数
for i in range(2, int(math.sqrt(N))+1):
if isPrime[i]:
for j in range(i*i, N+1, i):
isPrime[j] = False
# 找到最大素数
largest_prime = N
while not isPrime[largest_prime]:
largest_prime -= 1
return largest_prime
# 测试
N = int(input("请输入一个正整数N:"))
print("不大于N的最大素数是:", find_largest_prime(N))
```
示例输出:
```
请输入一个正整数N:30
不大于N的最大素数是: 29
```
阅读全文