购买一个域名能建几个网站,编程教学入门教程,深圳网络科技公司排名10,国外直播python编程实现#xff1a;从键盘输入一个正整数n(n2),请编程求解并输出大小最接近n的素数(n本身除外)
一、编程题目 从键盘输入一个正整数n(n2)#xff0c;请编程求解并输出大小最接近n的素数(n本身除外)。 (温馨提示#xff0c;结果可能是2个哦) 二、输入输出样例…python编程实现从键盘输入一个正整数n(n2),请编程求解并输出大小最接近n的素数(n本身除外)
一、编程题目 从键盘输入一个正整数n(n2)请编程求解并输出大小最接近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:breakdistance1return result 这里定义一个distance表示向n左边和右边移动的距离每次循环移动1步然后判断当前这个数是否是素数因为可能有两个最接近的素数所以定义了一个result列表来存储。由于每次循环左右两边移动的距离是一样的所以只要在左右两边找到一个或两个就是最近的此时结束循环即可。
3、获取用户输入判断用户输入的数字是否是合法的不合法提示合法则调用上面的方法输出结果。
n int(input())
if n2:print(输入格式错误请输入一个大于2的正整数)
else:result list(map(str,findPrimeCloseN(n)))print( .join(result)) 这里注意因为findPrimeCloseN方法返回的结果是Int类型的列表这里转为str字符串类型的因为join方法只只支持字符串类型的列表。 四、测试代码