I am a teacher!

导航

习题解析之:寻找反素数

【问题描述】
编写一个寻找反素数的小程序。

反素数是指一个将其逆向拼写后也是一个素数的非回文数。例如:17 和 71 都是素数且均不是回文数,所以 17 和 71 都是反素数。

输入一个正整数 n ,输出从小到大顺序输出小于 n 的所有反素数。

编程要求
根据提示,在右侧编辑器补充代码,完善寻找反素数的小程序。

测试说明
平台会对你编写的代码进行测试:

输入格式
输入一个正整数

输出格式
一行内输出从小到大排列的小于这个数的所有反素数,每个数字后面一个空格。

测试输入:
199
预期输出:
13 17 31 37 71 73 79 97 107 113 149 157 167 179

 【编程思路】

        先编写一个函数 is_prime(n) 用于判断整数 n 是否为素数,若n 是素数,返回 True;否则,返回 False。

        要找出小于 n 的所有反素数,用循环 for i in range(13,n): 对 13 ~ n - 1 这个范围的整数进行穷举,若某个整数 i 和其逆向拼写的整数 re_i (re_i =int(str(i)[::-1]) ) 不相等且 i 和 re_i 均是素数(

is_prime(i) and is_prime(re_i)),则整数 i 就是一个反素数,输出它。

        最小的反素数为 13 ,小于 13 的素数 2、3、5、7、11都不是反素数,因为它们都是回文数。

        按上面的思路,编写源程序如下:

image

posted on 2025-11-13 09:32  aTeacher  阅读(37)  评论(0)    收藏  举报