/**标题:组素数
素数就是不能再进行等分的数。比如2,3,5,7,11,等
9=3*3说明它可以等分,因而不是素数
我们国家在1949年建国,如果只给你 1 9 4 9 这4个数字卡片,
可以随意摆放他们的先后顺序(但卡片不能倒着摆放而且我们不是脑筋急转弯)
那么,你能组成多少个4位的素数
比如1949,4919都符合要求
全素数判定,素数生成(筛选)、质因数分解
全排列+检查
*/
public class _02组素数 {
static void f(int[] arr, int k) {
if (k == 4)// 1949这4位数
check(arr);
for (int i = k; i < 4; i++) {
// 交换
int t = arr[k];
arr[k] = arr[i];
arr[i] = t;
f(arr, k + 1);
t = arr[k];
arr[k] = arr[i];
arr[i] = t;
}
}
static Set<Integer> set = new HashSet<Integer>();
private static void check(int[] arr) {
int x = arr[0] * 1000 + arr[1] * 100 + arr[2] * 10 + arr[3];
boolean flag = true;
for (int i = 2; i < Math.sqrt(x); i++) {
if (x % i == 0) {
flag = false;
break;
}
}
if (flag)
set.add(x);
}
public static void main(String[] args) {
int[] arr = { 1, 4, 9, 9 };
f(arr, 0);
System.out.println(set.size());
}
}
素数就是不能再进行等分的数。比如2,3,5,7,11,等 9=3*3说明它可以等分,因而不是素数 我们国家在1949年建国,如果只给你 1 9 4 9 这4个数字卡片, 可以随意摆放他们的先后顺序(但
最新推荐文章于 2022-03-21 20:22:59 发布