2013第四届蓝桥杯 02 组素数(java)


标题: 组素数


    素数就是不能再进行等分的数。比如:2 3 5 7 11 等。
    9 = 3 * 3 说明它可以3等分,因而不是素数。


    我们国家在1949年建国。如果只给你 1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?


    比如:1949,4919 都符合要求。




请你提交:能组成的4位素数的个数,不要罗列这些素数!!


注意:不要提交解答过程,或其它的辅助说明文字。


结果:

6


代码如下:

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {1,9,4,9};
		int s = 0;
		int cnt = 0;
		for(int i = 0; i < 4; i++){
			for(int j = 0; j < 4; j++){
				for(int k = 0; k < 4; k++){
					for(int l = 0; l < 4; l++){
						if(i!=j && i!=k && i!=l &&
								j!=k && j!=l && k!=l){
							s = arr[i]*1000+arr[j]*100+arr[k]*10+arr[l];
							for(int a = 2; a < s; a++){
								if(s % a == 0){
									break;
								}
								if(a==s-1){	//判断到最后一个数则表明是素数
									cnt++;
									System.out.println(s);
								}
							}
						}
					}
				}
			}
		}
		System.out.println(cnt);	//里面含有重复的
	}
	
}

上面的程序的结果:

1949(重复)
1499(重复)
1499
1949
9419(重复)
9491(重复)
9941(重复)
4919(重复)
4919
9941
9419
9491

(12个)里面包含有重复的数字,因为数字中有两个9。


自己再筛选重复的数字后,真正的结果有6个

数值:

1499
1949
9491
9941
4919

9419


你可能感兴趣的:(蓝桥杯软件赛(java),蓝桥杯软件赛(java))