蓝桥杯:组素数

题目分析:

可以先通过循环,所有满足条件的数(由1,4,9,9组成),拿到满足条件的数,拼成一个数组,然后遍历这个数组,对数组里面的每一个元素进行是否为素数的判断(也可以在循环里面先判断这个数是否满足条件,满足条件,再判断他是否为素数,如果为素数,就自增)。

判断一个数是否是素数,就看它是不是只能被自身整除和1,如果有其他的数能够整除它,那它就不是素数。在写判断循环的时候,我们可以用这个数的平方根作为最后的范围条件【2-这个数的平方根】。

Java:

        

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        /*
        //从1499开始(为四个数字组成的最小的数目)遍历,拿到所有由1,4,9,9拼成的数
        for(int i = 1499;i<9999;i++){
            String str = i+"";
            //拼接成字符串,然后转换成char数组,在使用sort排序
            char ch[] = str.toCharArray();
            Arrays.sort(ch);
            //之后在拼接成字符串进行比较
            String s = "";
            for(char c : ch){
                s+=c;
            }
            //经过sort排序之后,里面的数字会从小到大排序,这时候我们只需要判断他是否为1,4,9,9组成的卡牌
            if(s.equals("1499")){
                System.out.print(i+",");
            }
        }
        //所以就能得到下面的数据:
        */
        int array[] = {1499,1949,1994,4199,4919,4991,9149,9194,9419,9491,9914,9941};
        int number = 0; //记录能组成4位素数的个数
        for(int i : array){
          if(check(i)){
            number++;
          }
        }
        System.out.println(number);
    }
    //检查是否为素数
    public static boolean check(int num){
      //一个大于1的自然数,除了1和它自身外,不能被其他自然数整除,对这个数进行开平方根进行判断,减少次数
        for(int i = 2;i<Math.sqrt(num);i++){
          if(num%i==0){
            return false;
          }
        }
        return true;
    }
}

答案是:

        

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值