题目描述
求 11 到 n 之间(包括 n),既是素数又是回文数的整数有多少个。
输入格式
一个大于 11 小于 10000 的整数 n。
输出格式
11 到 n 之间的素数回文数个数。
输入输出样例
输入
23
输出
1
说明/提示
回文数指左右对称的数,如:11,12121。
源码
package luogu;
import java.util.Scanner;
public class Test {
public static int[] prime = new int[10000];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
getPrime(n);//获取质数
for(int i=0;i<prime.length;i++) {
if(prime[i]!=0) {
Integer tmp = prime[i];
String tmp1 = tmp.toString();//将整形转换成字符串
String tmp2 = "";//定义空字符串
for(int j=tmp1.length()-1;j>=0;j--) {
String ch = tmp1.substring(j,j+1);//逆序取出每一个字符
tmp2 += ch;//拼接字符
}
if(tmp1.equals(tmp2)) {
count++;
}
}
}
System.out.println(count);
}
//生成质数
public static void getPrime(int n) {
int k = 0;
for(int i=11;i<=n;i++) {
boolean flag = true;
for(int j=2;j<=Math.sqrt(i);j++) {
if(i%j==0) {
flag = false;
}
}
if(flag) {
prime[k] = i;
k++;
}
}
}
}