回文素数
10301是个5位的素数。它有个特点,把数字倒过来还是它本身,具有这样特征的素数,我们称之为:回文素数。
10501
10601
11311
这些都是5位的回文素数。
请你计算一下,像这样的5位数的回文素数,一共有多少个?
请填写这个表示个数的整数,注意不要写任何其它多余的内容,比如说明或解释文字,也不要列出所有的回文素数。
思路
先后判断回文数和素数就ok。
代码
package day27;
public class 回文素数 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=0;
for (int i = 10000; i < 100000; i++) {
if(check(i)){//回文数方法
if(checks(i)){//素数方法
count++;
}
}
}
System.out.println(count);
}
private static boolean checks(int i) {//判断素数
// TODO Auto-generated method stub
for (int j = 2; j < i; j++) {
if(i%j==0){
return false;
}
}
return true;
}
private static boolean check(int i) {//判断回文数,用的是双指针判断的,还可以用其他的方式
// TODO Auto-generated method stub
String str = i+"";
int l=0;
int r=str.length()-1;
while(l<r){
if(l<=r&&str.charAt(l)==str.charAt(r)){
l++;
r--;
}else{
return false;
}
}
return true;
}
}
下面是暴力判断回文数,反正是五位数不会变,两个都对
package 历届真题;
public class 回文素数 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a;
int b=0;
for (int i = 10000; i < 99999; i++) {
a=i/10000+(i/1000%10)*10+(i/100%10)*100+(i/10%10)*1000+(i%10)*10000;
if(i==a){
boolean c = true;
for (int j = 2; j < i; j++) {
if(i%j==0){
c=false;
break;
}
}
if(c){
b+=1;
}
}
}
System.out.println(b);
}
}