python编程:判断一个数是否是超级素数 |
您所在的位置:网站首页 › 1317是不是质数 › python编程:判断一个数是否是超级素数 |
请定义一个函数,实现判断一个数是否是超级素数,并输出判断的结果。
一、编程题目
我们都知道,素数是除了1之外只能被自身整数的数,1除外。如果一个素数,去除一位、两位或多位后依然是素数,则我们称该素数为超级素数。 请定义一个函数,实现判断一个数是否是超级素数,并输出判断的结果。 二、输入输出样例输入样例:12 输出样例:12 不是一个超级素数 输入样例:373 输出样例:373 是一个超级素数
输入样例:10.2 输出样例:输入格式错误,请输入一个整数! 三、代码实现1、首先定义一个函数,用于判断一个数是否是素数,素数是大于1的数,且只能被自身和1整除。 import math def isPrime(n): # 判断一个数是否是素数 if n < 2: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True在上面这个代码中,我们定义了一个叫isPrime的函数,如果数字小于2直接返回false,否则判断2到根号n 再加1之间的数能不能被n整除,这里要注意的就是,不用从2到n进行判断,因为如果根号n再加1都无法整除,那么后面的数字更是无法整除,从而可以减小循环的判断,加快执行的速度。
2、定义一个判断是否是超级素数的函数,用于判断一个数每去掉一位是否还是素数。 def isSuperPrime(n): # 判断一个数是否是超级素数 n_str = str(n) for i in range(len(n_str)): cur_n = n_str[:len(n_str)-i] #从个位开始去掉一个数之后判断是否依然是素数 if not isPrime(int(cur_n)): return False return True上面的代码中,我们定义了一个isSuperPrime函数,因为要判断这个数每去掉一位是否是素数,因此我们把这个数转为字符串类型,方便处理,因为字符串类型的数据可以通过切片的方式对每一位进行截取。 我们循环这个数字的长度,从个位数开始截取,每次去掉一位,看剩余的数字是否还是素数,判断方法就是直接调用之前写好的判断素数的方法,如果不是素数,则循环结束,这个数就不可能是超级素数,否则一直循环判断完毕,如果最后都满足素数,则该数字是一个超级素数,最后返回True
3、在主函数中,实现输入和判断,并输出判断的结果 if __name__ == '__main__': n = input('请输入一个整数:') try: n = int(n) if isSuperPrime(n): print('{} 是一个超级素数!'.format(n)) else: print('{} 不是一个超级素数!'.format(n)) except: print('输入格式有误,请输入一个整数!')我们通过input获取输入的数字,然后转为int,如果输入的数字格式不对,比如输入的是小数,那么转int就会报错,报错了就提示输入格式有误,否则调用判断超级素数的方法,判断该数字是否是超级素数,是的话,输出是超级素数,否则输出不是超级素数。 四、测试1、输入数字:12 2、输入数字:373
3、输入0.23
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |