public class Mao {
public static void main(String[] args) {
for (int i = 100; i <= 9999; i++) {
boolean ok = f(i);
if (ok) {
boolean confirm=g(i);
if(confirm){
System.out.println("符合条件:"+i);
}
}
}
}
// 试商判别法
public static boolean f(int l) {
if (l <= 1) {
return false;
}
int max = (int) Math.sqrt(l);
for (int i = 2; i < max + 1; i++) {
if (l % i == 0) {
return false;
}
}
return true;
}
// 判断条件是否成立
public static boolean g(int n) {
int m = n;
String result = String.valueOf(m);
int length = result.length();
int a1,a2,a3,a4,a5;
boolean s1,s2,s3,s4,s5,temp=false,temp1=false,temp2=false,temp3=false;
if (length == 3) {
//同时去掉最高位和最低位
a1=m/10;
a1=a1%10;
//去掉最低位
a2=m/10;
//去掉最低位两位
a3=m/100;
//去掉最高位
a4=m%100;
//去掉最高位两位
a5=m%10;
s1=f(a1);
s2=f(a2);
s3=f(a3);
s4=f(a4);
s5=f(a5);
if(s2&&s3){
temp=true;
}
if(s4&&s5){
temp1=true;
}
if(s1&&temp1&&temp){
return true;
}else{
return false;
}
}
//判断4位数
if(length==4){
//同时去掉最高位和最低位
a1=m/10;
a1=a1%100;
//去掉最低位
a2=m/10;
//去掉最低位两位
a3=m/100;
//去掉最高位
a4=m%1000;
//去掉最高位两位
a5=m%100;
s1=f(a1);
s2=f(a2);
s3=f(a3);
s4=f(a4);
s5=f(a5);
if(s2&&s3){
temp2=true;
}
if(s4&&s5){
temp3=true;
}
if(s1&&temp2&&temp3){
return true;
}else{
return false;
}
}
return false;
}
} //注释:本人觉得计算机程序设计经典题解的答案有掉解,欢迎各位提出不同的答案