0
点赞
收藏
分享

微信扫一扫

第十二届蓝桥杯 2021年国赛真题 B纯质数

小迁不秃头 2022-05-01 阅读 46

题目:
在这里插入图片描述
解析:
两个思路,一个是挨个遍历,挨个判断,另一个是 因为在 [ 0 , 10 ) 中,质数仅占 { 2 , 3 , 5 , 7 } 四位,如果仅判断这四个数字组合成的数是否是质数的话,性能能否有进一步的提升。

代码:

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static final int N = 20210605;

    public static void main(String[] args) {
        boolean[] marked = new boolean[N + 1];
        List<Integer> primes = new ArrayList();
        marked[0] = marked[1] = true;
        int ans = 0;
        for (int i = 2; i <= N; i++) {
            if (!marked[i]) {
                primes.add(i);
                boolean flag = false;
                for (int k = i; k > 0; k /= 10)
                    if (flag = marked[k % 10]) break;
                if (!flag) ans++;
            }
            for (int p : primes) {
                if (p * i > N)  break;
                marked[p * i] = true;
                if (i % p == 0) break;
            }
        }
        System.out.println(ans);
    }
}


举报

相关推荐

0 条评论