数组全排列,素数判断,素数筛选代码模板
总结于蓝桥杯组素数竞赛题。
package _04第四届;
import java.util.HashSet;
import java.util.Set;
public class Test02组素数2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]= {1,9,4,9};
f(arr,0);
System.out.println(set.size());
}
private static void f(int[] arr, int k) { //全排列模板在数组中模板
// TODO Auto-generated method stub
if(k==4) {
check(arr);//前面都已确定
}
for(int i=k;i<arr.length;i++) {
int temp=arr[k];//交换
arr[k]=arr[i];
arr[i]=temp;
f(arr,k+1);
temp=arr[k];//需要交换回来,因为在数组中
arr[k]=arr[i];
arr[i]=temp;
}
}
static Set<Integer> set =new HashSet<Integer>();
private static void check(int[] arr) { //素数筛选模板
// TODO Auto-generated method stub
int x=arr[0]*1000+arr[1]*100+arr[2]*10+arr[3]*1;
boolean flag=true;
for(int i=2;i<Math.sqrt(x);i++) {
if(x%i==0) {
flag=false;
}
}
if(flag) {
set.add(x);
// System.out.println(x); //可以输出来看一下
}
}
}