题目分析:
可以先通过循环,所有满足条件的数(由1,4,9,9组成),拿到满足条件的数,拼成一个数组,然后遍历这个数组,对数组里面的每一个元素进行是否为素数的判断(也可以在循环里面先判断这个数是否满足条件,满足条件,再判断他是否为素数,如果为素数,就自增)。
判断一个数是否是素数,就看它是不是只能被自身整除和1,如果有其他的数能够整除它,那它就不是素数。在写判断循环的时候,我们可以用这个数的平方根作为最后的范围条件【2-这个数的平方根】。
Java:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
/*
//从1499开始(为四个数字组成的最小的数目)遍历,拿到所有由1,4,9,9拼成的数
for(int i = 1499;i<9999;i++){
String str = i+"";
//拼接成字符串,然后转换成char数组,在使用sort排序
char ch[] = str.toCharArray();
Arrays.sort(ch);
//之后在拼接成字符串进行比较
String s = "";
for(char c : ch){
s+=c;
}
//经过sort排序之后,里面的数字会从小到大排序,这时候我们只需要判断他是否为1,4,9,9组成的卡牌
if(s.equals("1499")){
System.out.print(i+",");
}
}
//所以就能得到下面的数据:
*/
int array[] = {1499,1949,1994,4199,4919,4991,9149,9194,9419,9491,9914,9941};
int number = 0; //记录能组成4位素数的个数
for(int i : array){
if(check(i)){
number++;
}
}
System.out.println(number);
}
//检查是否为素数
public static boolean check(int num){
//一个大于1的自然数,除了1和它自身外,不能被其他自然数整除,对这个数进行开平方根进行判断,减少次数
for(int i = 2;i<Math.sqrt(num);i++){
if(num%i==0){
return false;
}
}
return true;
}
}
答案是: