码迷,mamicode.com
首页 > 编程语言 > 详细

组素数-Java

时间:2020-04-17 19:58:54      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:generated   class   fun   lse   lag   Stub   ext   array   iterator   

我们国家在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

标签:generated   class   fun   lse   lag   Stub   ext   array   iterator   

原文地址:https://www.cnblogs.com/effortfordream/p/12722039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!