题目:
10301是个5位的素数。它有个特点,把数字倒过来还是它本身,具有这样特征的素数,我们称之为:回文素数。
10501
10601
11311
这些都是5位的回文素数。
请你计算一下,像这样的5位数的回文素数,一共有多少个?
请填写这个表示个数的整数,注意不要写任何其它多余的内容,比如说明或解释文字,也不要列出所有的回文素数。
代码如下:
public class Main {
public static void main(String[] args) {
int s=0; //计数
for(int i=10000;i<=99999;i++)
{
if(f(i)==1)
{
//System.err.println(i);
if(f2(i)==1)
{
System.out.println(i);
s++;
System.out.println(s);
}
}
}
}
public static int f(int n) //判断素数的方法
{
for(int i=2;i<n;i++)
{
if(n%i==0)
{
return 0; //不是素数
}
}
return 1; //是素数
}
public static int f2(int n) //判断回文素数的方法
{
String s=n+""; //将int类型转化为String类型 然后进行比较
if(s.substring(0,1).equals(s.substring(4,5))&&s.substring(1,2).equals(s.substring(3,4)))//字符串比较用equals
{
return 1; //是回文素数
}
return 0; //不是回文素数
}
}
分析:这题首先判断10000—99999中有那些素数?
接着我们分析,那些素数是回文素数?
在分析回文素数的时候,我们知道,第一位和第五位相同,第二位和第四位相同----这是解决本题的关键
利用“%”把各个位的数拆分出来