P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。
输入格式
第 1 行: 二个整数 a 和 b .
输出格式
输出一个回文质数的列表,一行一个。
输入输出样例
输入 #1
5 500
输出 #1
5 7 11 101 131 151 181 191 313 353 373 383
第三天,好吧,又出问题,爆内存了。。。。
思路:
从 a到b遍历,先判断是否是回文:用int转string
在判断是否为质数:string转int
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
String c = "";
for (int i = a; i <= b; i++) {
if (i>=10){
c = String.valueOf(i);
if (reverse(c).equals(c)){
int x = Integer.parseInt(c);
if (sushu(x)){
System.out.println(x);
}
}
}else {
if (sushu(i)){
System.out.println(i);
}
}
}
}
static String reverse(String str){
String string = "";
for (int i = str.length()-1; i >= 0; i--) {
string += str.charAt(i);
}
return string;
}
static Boolean sushu(int num){
for (int i = 2; i < num; i++) {
if (num%i == 0){
return false;
}else if (i == num -1){
return true;
}
}
return true;
}
}
浙公网安备 33010602011771号