**素数就是不能再进行等分的数。比如:2 3 5 7 112 3 5 7 11 等。 9 = 3 * 39=3∗3 说明它可以3等分,因而不是素数。
我们国家在 19491949 年建国。如果只给你 1 9 4 91 9 4 9 这 44 个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个 44 位的素数呢?
比如:19491949,49194919 都符合要求。
请你输出能组成的 44 位素数的个数,不要罗列这些素数!!**
代码实现
import java.util.Scanner; import java.util.HashSet; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... HashSetset = new HashSet<>(); String s = "1949"; f1(set,0,s.length() - 1,s.toCharArray()); int num = 0; for(String relsut : set){ int n = Integer.parseInt(relsut); if(judge(n)){ num++; } } System.out.println(num); scan.close(); } //全排列算法 public static void f1(HashSet set,int from, int to, char[] arr){ if(from == to){ set.add(new String(arr)); } for(int i = from; i <= to; i++){ swap(arr,i,from); f1(set,from + 1, to, arr); swap(arr, i, from); } } public static void swap(char[] arr, int i, int j){ char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static boolean judge(int n){ if(n == 2){ return true; } for(int i = 2; i < n; i++){ if(n % i == 0){ return false; } } return true; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)