您的位置:首页 > 编程语言 > Java开发

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

2018-03-12 10:13 197 查看
标题: 组素数

    素数就是不能再进行等分的数。比如: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: