问题描述
所谓回文素数是指一个整数n,从左到右读和从右到左读的值相同,且n是素数,则该整数称为回文素数。
对于偶数位整数来说,除了11之外,不存在回文素数。也就是说,所有4位整数、6位整数、8位整数……都没有回文素数。 下面列出了两位和三位数整数中包含的所有回文素数。
两位数回文素数:11
三位数回文素数:101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929
本题要解决的问题是:找到所有不超过1000的回文素数。
问题分析
本题采用判断素数的方法,解决如何求一个整数的回文数。
所采用的方法是穷举法。 检查 1000 内的每个整数 n 以确定 n 是否是回文数。 如果n是回文数,则判断它是否是素数。 对于一个既是回文数又是素数的整数n,它就是所要求的回文素数,可以打印出来。
由于该题要求求解不超过1000的所有回文素数,因此最终结果应包含两位数和三位数的回文数。
使用穷举法构造一个整数并找到其对应的倒数。 如果该整数等于其倒数,则该整数是回文数。
算法设计
在问题分析中,确定采用穷举法,对1000以内的每一个整数进行一一检查。 因此,本题的算法设计可以使用循环结构来完成。
通过三重循环迭代 1000 以内的所有整数。 使用三个循环变量构造整数 n。 同时,这三个循环变量的倒序可以构造n的倒数m。 其中,需要特别注意的是,如果n的个位数为0,接下来要做的就是比较m和n的值是否相等。 如果相等,则说明整数n是回文数。 然后判断n是否为素数。 如果n也是素数,则n是回文素数。 只需打印出来即可。
这是完整的代码:
#
int 乐趣(int n);
int main()
int i、j、k、n、m;
("回文数不超过1000:\n");
对于(i=0;我