You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门:求输入数最近质数的基础代码实现求助

解决找最近质数的问题(纯基础Python实现)

嘿,作为Python新手完全不用慌,咱们拆解成两个小问题一步步来,全用最基础的循环和判断就能搞定!

第一步:先写判断质数的基础函数

首先得搞明白怎么判断一个数K是不是质数:质数是大于1的自然数,除了1和它自己之外没有其他能整除它的数。咱们写个is_prime函数,逻辑超简单:

  • 如果K小于2,直接返回False(因为质数得大于1)
  • 从2开始循环到K的一半(不用算到K,因为如果K有大于它一半的因数,那对应的另一个因数肯定小于2,早被检查过了),如果有任何数能整除K,说明不是质数,返回False
  • 循环结束都没找到能整除的数,那就是质数,返回True

代码如下:

def is_prime(k):
    # 小于2的数都不是质数
    if k < 2:
        return False
    # 从2循环到k的一半(包含)
    for i in range(2, k//2 + 1):
        if k % i == 0:
            # 找到能整除的数,不是质数
            return False
    # 循环完都没找到,是质数
    return True

第二步:找最接近n的质数

接下来我们处理用户输入,然后找最近的质数:

  1. 先获取用户输入的数字n,转成整数
  2. 先检查n本身是不是质数,如果是直接输出就行(比如输入17,直接返回17)
  3. 如果n不是质数,我们需要分别找比n小的第一个质数和比n大的第一个质数
  4. 比较这两个质数和n的距离:
    • 如果小的那个质数距离更近,输出它
    • 如果大的那个更近,输出它
    • 如果距离一样(比如输入6,5和7距离都是1),就输出较小的那个(也就是5)

对应的代码:

# 获取用户输入,转成整数
n = int(input("请输入数字n:"))

# 先检查n本身是不是质数
if is_prime(n):
    print(n)
else:
    # 找比n小的第一个质数
    lower_prime = n - 1
    while lower_prime >= 2:
        if is_prime(lower_prime):
            break
        lower_prime -= 1
    
    # 找比n大的第一个质数
    upper_prime = n + 1
    while True:
        if is_prime(upper_prime):
            break
        upper_prime += 1
    
    # 计算距离
    distance_lower = n - lower_prime
    distance_upper = upper_prime - n
    
    # 判断输出哪个
    if distance_lower < distance_upper:
        print(lower_prime)
    elif distance_upper < distance_lower:
        print(upper_prime)
    else:
        # 距离相等,输出较小的那个
        print(lower_prime)

测试一下示例

  • 输入17:因为17是质数,直接输出17
  • 输入6:6不是质数,往下找第一个质数是5,往上是7,距离都是1,所以输出5
  • 输入1:往下找不到(最小质数是2),所以直接输出2
  • 输入4:往下是3,往上是5,距离都是1,输出3

这样所有逻辑都用最基础的循环、判断实现,完全没有复杂的知识点,新手也能看懂每一行的作用~

内容的提问来源于stack exchange,提问作者codinggirl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:34:03