P1217 [USACO1.5]回文质数 Prime Palindromes

题目描述

因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)[a,b](5a<b100,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;
    }
}

  

posted on 2020-02-16 20:26  Hi,Bro  阅读(242)  评论(0编辑  收藏  举报