组素数-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的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

ZZNUOJ_用Java编写程序实现1555:双胞胎素数(附源码)

LQ0206 组素数枚举+素数

这个代码片段有啥作用?

markdown 岩组代码片段

Java中带指数的素数分解