第十四届蓝桥杯三月真题刷题训练——第9天
- 手机
- 2025-08-19 18:54:01

第 1 题:找素数 题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
素数就是不能再进行等分的整数。比如:7,11。而 9 不是素数,因为它可以平分为 3 等份。一般认为最小的素数是22,接着是 3,5,...
请问,第 100002(十万零二)个素数是多少?
请注意:“2”是第一素数,“3” 是第二个素数,依此类推。
运行限制 最大运行时间:1s最大运行内存: 128M 代码:(普通筛) package 第十四届蓝桥杯三月真题刷题训练.day9; /** * @author yx * @date 2023-03-12 18:43 */ public class 找素数 { public static void main(String[] args) { int ans=0; int i=2; while (true){ if(isPrime(i)){ ans++; if(ans==100002){ System.out.println(i); return; } } i++; } } static boolean isPrime(int n){ for (int i = 2; i <= Math.sqrt(n) ; i++) { if(n%i==0){ return false; } } return true; } } 代码:(欧拉筛) package 第十四届蓝桥杯三月真题刷题训练.day9; public class 欧拉筛 { public static void main(String[] args) { //默认false为质数 int N=10000000;//N不能给太大,否则会爆栈 boolean[] isPrime = new boolean[N]; int[] prime=new int[N]; isPrime[0]=isPrime[1]=true;//0,1都不是质数 int temp=0; for (int i = 2; i < N; i++) { if(!isPrime[i]){ prime[temp++]=i; if(temp==100002){ System.out.println(i); return; } } for (int j = 0; j < temp && i*prime[j]<N; j++) {//i*prime[j]<N防止越界 isPrime[i*prime[j]]=true;//标记为非素数、 if(i%prime[j]==0)break;//防止重复标记 } } } }贴一个讲的不错的视频:
欧拉筛【力扣周赛 326】LeetCode_哔哩哔哩_bilibili本节讲了如何线性筛质数(也叫欧拉筛)。欢迎一键三连,在评论区发表你对这场周赛的体会。, 视频播放量 4432、弹幕量 13、点赞数 257、投硬币枚数 189、收藏人数 76、转发人数 12, 视频作者 灵茶山艾府, 作者简介 算法讲师 | 力扣竞赛 Top10 | 全网刷题量 7000+,相关视频:我上次在代码中看到算法,还是一个刚毕业不久的同事用了一个分治+回溯,没考虑空间复杂度导致线上OOM……,求素数【欧拉筛法】,并查集 最小堆【力扣周赛 323】,外国佬用Neovim写代码,有点武侠比武的代入感,欧拉筛,几行就行,一次就好,y总,你当年的同学都年薪百万了吗 | 力扣第326场周赛,蓝桥杯算法学习路线 | 全程制作过程公开,Leetcode 第326场周赛国服36名菜鸡实况解说:2023从一场超级手速场开始......,一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解,ACM金牌可以在大厂乱杀吗? .bilibili /video/BV1H8411E7hn/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=eb072ba6b610daa77b0adfe79fcc5879
第 2 题:图书排列_dfs板子 题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将编号为 1 ~ 10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
运行限制 最大运行时间:1s最大运行内存: 128M 代码:之前写过一摸一样的dfs板子,改一下check函数即可食用
真题传送:第十四届蓝桥杯三月真题刷题训练——第 4 天_小羊不会飞的博客-CSDN博客
package 第十四届蓝桥杯三月真题刷题训练.day9; /** * @author yx * @date 2023-03-12 20:18 */ public class 图书排列_dfs { static int[] nums = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; static int ans = 0; static int to = 9; public static void main(String[] args) { dfs(0); System.out.println(ans); } //from是数组交换位置的头指针(依次会+1),to是尾指针相当于哨兵的作用,当from==to的时候退出 static void dfs(int from) { if (from == to) { //递归的出口 check();//检查是否相邻 } else { for (int i = from; i <= to; i++) { swap(from, i); dfs(from + 1); //回溯恢复 swap(from, i); } } } static void swap(int a, int b) { int temp = nums[a]; nums[a] = nums[b]; nums[b] = temp; } static void check(){ for (int i = to; i >= 1; i--) { if(Math.abs(nums[i]-nums[i-1])==1){ return; } } ans++; } }看了一晚上欧拉筛,明天补题,先跑步去了
第 3 题:日志统计 第 4 题: 杨辉三角第十四届蓝桥杯三月真题刷题训练——第9天由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“第十四届蓝桥杯三月真题刷题训练——第9天”