題目描述
如果一個整數只能被1和自己整除,就稱這個數是素數。
如果一個數正着反着都是一樣,就稱爲這個數是迴文數。例如:6, 66, 606, 6666
如果一個數字既是素數也是迴文數,就稱這個數是迴文素數
牛牛現在給定一個區間[L, R],希望你能求出在這個區間內有多少個迴文素數。
輸入描述:
輸入包括一行,一行中有兩個整數(1 ≤ L ≤ R ≤ 1000)
輸出描述:
輸出一個整數,表示區間內迴文素數個數。
示例1
輸入
100 150
輸出
2
package com.qiye;
import java.util.Scanner;
import java.util.Stack;
public class PrimeAndCircleNum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
int count = 0;
for(int i = x;i <=y;i ++){
boolean isPrime = false;
boolean isCircle = false;
isPrime = judgePrime(i);
isCircle = judgeCircle(i);
// System.out.println("現在的i是:" + i +" 它是素數嗎? " + isPrime + " 它是迴文數嗎? " + isCircle);
if(isPrime && isCircle){
count++;
}
}
System.out.println(count);
}
public static boolean judgePrime(int num){
if(num < 2) return false;
if(num == 2) return true;
if(num % 2 == 0) return false;
for(int i=3;i*i <= num;i += 2){
if(num % i == 0){
return false;
}
}
return true;
}
public static boolean judgeCircle(int num){
String s = num + "";
char characters[] = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(int i=0;i < characters.length;i ++){
stack.push(characters[i]);
}
String s1 = "";
while (!stack.isEmpty()){
s1 += stack.pop();
}
if(s1.equals(s)){
return true;
}
return false;
}
}
這題挺好的,兩個基本算法的綜合,迴文數和素數判斷。