当前位置: 首页 > news >正文

python编程:从键盘输入一个正整数n(n>2),请编程求解并输出大小最接近n的素数(n本身除外)

python编程实现:从键盘输入一个正整数n(n>2),请编程求解并输出大小最接近n的素数(n本身除外)

一、编程题目

        从键盘输入一个正整数n(n>2),请编程求解并输出大小最接近n的素数(n本身除外)。

        (温馨提示,结果可能是2个哦)


二、输入输出样例

        输入样例:5

        输出样例:3 7

       输入样例:44

       输出样例:43

       

    输入样例:-1

    输出样例:输入格式错误,请输入一个大于2的正整数!


三、编程实现

        这个题目的关键点是要考虑最接近n的素数有可能不止1个。因此要在n两边进行素数的查找,并输出与n距离最近的一个或两个素数。

   1、首先判断一个数是否是素数,很简单,只要判断是否只能被自身整除。   

import mathdef isPrime(num):'''判断一个数是否是素数'''for i in range(2,int(math.sqrt(num))+1):if num % i == 0:return Falsereturn True

     2、以输入的正整数n为起始点,分别向小于n和大于n的两个方向循环查找,直到找到素数为止,如果左边先找到,则左边找到的素数最接近n,如果右先找到,则右边找到的素数最接近n,如果左右先同时找到,找到的素数都是最接近n的。

def findPrimeCloseN(n):'''查找与n最接近的素数'''distance = 1result = []while (n-distance)>=2:if isPrime(n-distance):result.append(n-distance)if isPrime(n + distance):result.append(n + distance)if result:breakdistance+=1return result

        这里定义一个distance表示向n左边和右边移动的距离,每次循环移动1步,然后判断当前这个数是否是素数,因为可能有两个最接近的素数,所以定义了一个result列表来存储。由于每次循环左右两边移动的距离是一样的,所以只要在左右两边找到一个或两个就是最近的,此时结束循环即可。

3、获取用户输入,判断用户输入的数字是否是合法的,不合法提示,合法则调用上面的方法,输出结果。

n = int(input())
if n<=2:print('输入格式错误,请输入一个大于2的正整数!')
else:result = list(map(str,findPrimeCloseN(n)))print(' '.join(result))

      这里注意,因为findPrimeCloseN方法返回的结果是Int类型的列表,这里转为str字符串类型的,因为join方法只只支持字符串类型的列表。


四、测试代码

        

 

 

 

 

http://www.lryc.cn/news/45301.html

相关文章:

  • spring的面试宝典
  • ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合深度应用
  • (二)MyBatis源码阅读:SqlSession分析
  • 小白学Pytorch系列-- torch.autograd API
  • 【大数据基础】基于零售交易数据的Spark数据处理与分析
  • 【机器学习】P14 Tensorflow 使用指南 Dense Sequential Tensorflow 实现
  • ubuntu18.04安装nvidia驱动,3种方式图文详解+卸载教程
  • 多线程进阶学习11------CountDownLatch、CyclicBarrier、Semaphore详解
  • 华为OD机试用java实现 -【RSA 加密算法】
  • 技术宅小伙:大龄程序员就业,未来我们将何去何从?
  • Spring Boot+Vue实现Socket通知推送
  • python---python介绍
  • 第十四届蓝桥杯大赛——真题训练第10天
  • 3.29~3.30学习总结
  • 结构体详解 ——— C语言
  • Java SE 基础(4) Java的语言特点
  • 都炸店了,拼多多还在坚持什么
  • vue尚品汇商城项目-day01【6.Footer组件的显示与隐藏】
  • 命令行上的数据科学第二版 一、简介
  • utf-8转换到utf-16的转换过程你懂吗?
  • C++编程大师之路:从入门到精通--持续更新中~
  • 面试阿里软件测试岗,收到offer后我却毫不犹豫拒绝了....
  • 【c语言多线程编程】关于pthread_create()和pthread_join()的多线程详解
  • 抖音seo矩阵系统源码搭建技术+二开开源代码定制部署
  • 【周赛刷题】平衡树+图中最短环
  • C++笔记——第十篇 继承 的解析,详细易懂哦
  • SQL Server中的全文搜索
  • 自适应平移混音方法
  • 炼钢厂VR职业技能实训软件,提高员工学习效率和掌握技能速度
  • MySQL数据库范式