蓝桥杯:P0704回文数和质数
一个数如果从左往右读和从右往左读数字是完全相同的,则称这个数为回文数,比如898,1221,15651都是回文数。编写一个程序,输入两个整数min和max,然后对于min~max之间的每一个整数(包括min和max),如果它既是一个回文数又是一个质数,那么就把它打印出来。要求,回文数和质数的判断都必要要用函数的形式来实现。
输入:
5 100
输出:
5 7 11
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int min=input.nextInt();
int max=input.nextInt();
printPrimePalindrome(min, max);
}
//判断是否为回文数且质数,满足条件打印
public static void printPrimePalindrome(int min,int max){
for (int i = min;i<=max;i++){
if (isPalindrome(i)&&isPrime(i)){//回文数且质数,满足条件打印
System.out.print(i+" ");
}
}
}
//判断是否为回文数
public static boolean isPalindrome(int num){
String []str=String.valueOf(num).split("");
int len=str.length;
int i=0;
//循环,相等继续比较直到满足条件退出,中途不等则返回false,停止循环
while (i<str.length/2){
if (!str[i].equals(str[len-i-1])){
return false;
}
i+=1;
}
return true;
}
//判断是否为质数
public static boolean isPrime(int num){
if (num<2)return false;
//i*i<=num,减少循环次数,相等的话就一定不是质数,
// 小于的话再到if语句判断,不能取模为0再跑for循环
for (int i=2;i*i<=num;i++){
if (num%i==0)return false;
}
return true;
}
}