组素数-Java
Posted zzl521
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组素数-Java相关的知识,希望对你有一定的参考价值。
我们国家在1949年建国。如果只给你 1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?比如:1949,4919 都符合要求。请你提交:能组成的4位素数的个数,不要罗列这些素数!!
先来看一个全排列框架
递归set去重实现,想不明白没关系,会用就好
import java.util.HashSet;
import java.util.Set;
public class t {
static Set<Integer> set=new HashSet<Integer>();
static void function (int arr[],int k) {
if(k==4) {
Save(arr);
}
for (int i = k; i < 4; i++) {
int t=arr[k];
arr[k]=arr[i];
arr[i]=t;
function(arr, k+1);
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
private static void Save(int[] arr) {
// TODO Auto-generated method stub
int iterate=1000;
int x=0;
for (int i = 0; i<4; i++) {
x+=arr[i]*iterate;
iterate/=10;
}
set.add(x);
}
public static void main(String[] args) {
// int arr[]=new int [100];
// arr[0]=9;
// for (int i = 1; i <4; i++) {
// arr[i]=i;
// }
int arr[]= {1,2,3,4};
function(arr, 0);
System.out.println(set.size());
System.out.println(set);
}
}
题目代码
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Main {
/*
* 递归全排列框架
*/
static void function (int arr[],int k) {
if(k==4) {
check(arr);
}
for (int i = k; i < 4; i++) {
int t=arr[k];
arr[k]=arr[i];
arr[i]=t;
function(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) {
// TODO Auto-generated method stub
int sum=arr[0]*1000+arr[1]*100+arr[2]*10+arr[3];
Boolean flag=true;
for (int i = 2; i <=Math.sqrt(sum); i++) {
if(sum%i==0)
{
flag=false;
break;
}
}
if(flag==true) {
set.add(sum);
}
}
public static void main(String[] args) {
int arr[]= {1,9,4,9};
function(arr,0);
System.out.println(set.size());
System.out.println(set);
Iterator<Integer> iterator=set.iterator();
while(iterator.hasNext()) {
int xx=iterator.next();
System.out.print(xx+" ");
}
}
}
结果
6
[4919, 9941, 9491, 1949, 9419, 1499]
以上是关于组素数-Java的主要内容,如果未能解决你的问题,请参考以下文章