【GESP二级】比n小的最大质数暂无标签时间限制:CC++ 1000MS其他语言 2000MS内存限制:CC++ 256MB其他语言 512MB难度:简单出题人:描述对于给定的n求比n小的质数中最大的一个。质数是指一个大于1的自然数除了1和它自身外不能被其他自然数整除的数。输入描述一个整数n。2n10000输出描述一个整数即题目要求的解。用例输入 1 100用例输出 1 97来源电子学会2021年
解题思路:
- 先判断一个数是否为质数,可以从2开始依次判断是否能整除该数,如果能整除则不是质数,如果不能整除则是质数。
- 从给定的n开始,依次判断n-1,n-2,...,2是否为质数,找到第一个质数即为题目所求的解。
算法步骤:
- 读取输入的整数n。
- 从n-1开始依次判断是否为质数,直到找到第一个质数为止。
- 输出找到的质数。
时间复杂度分析: 对于每个n,最坏情况下需要判断n-2个数是否为质数,所以时间复杂度为O(n)。
空间复杂度分析: 只需要使用常量级别的额外空间,所以空间复杂度为O(1)。
完整代码如下:
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
n = int(input())
while not is_prime(n):
n -= 1
print(n)
``
原文地址: https://www.cveoy.top/t/topic/iDs1 著作权归作者所有。请勿转载和采集!