试题 算法训练 P0704
资源限制
时间限制:1.0s 内存限制:256.0MB
一个数如果从左往右读和从右往左读数字是完全相同的,则称这个数为回文数,比如898,1221,15651都是回文数。编写一个程序,输入两个整数min和max,然后对于min~max之间的每一个整数(包括min和max),如果它既是一个回文数又是一个质数,那么就把它打印出来。要求,回文数和质数的判断都必要要用函数的形式来实现。
输入:
5 100
输出:
5 7 11
- 判断是否为质数的方法
//判断是否为质数
public static boolean isPrime(int n) {
boolean flag = true;
if(n==1) {
flag = false;
}
else {
for (int i = 2; i <= Math.sqrt(n); i++)
if (n % i == 0) {
flag = false;
}
}
return flag;
}
- 判断是否为回文数的方法
//判断是否为回文数
public static boolean isHuiWen(int n){
String s = String.valueOf(n);
for(int i = 0; i < s.length()/2 ; i++){
if(s.charAt(i) != s.charAt(s.length()-1-i)) {
return false;
}
}
return true;
}
- 全部代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int min = sc.nextInt();
int max = sc.nextInt();
for (int i = min; i <= max; i++) {
if(isPrime(i) == true && isHuiWen(i) == true) {
System.out.print(i+" ");
}
}
}
//判断是否为质数
public static boolean isPrime(int n) {
boolean flag = true;
if(n==1) {
flag = false;
}
else {
for (int i = 2; i <= Math.sqrt(n); i++)
if (n % i == 0) {
flag = false;
}
}
return flag;
}
//判断是否为回文数
public static boolean isHuiWen(int n){
String s = String.valueOf(n);
for(int i = 0; i < s.length()/2 ; i++){
if(s.charAt(i) != s.charAt(s.length()-1-i)) {
return false;
}
}
return true;
}
}