当前位置: 首页 > news >正文

【JAVA】第3关:素数链

任务描述
编程要求
测试说明
任务描述
本关任务:把从 1 到 n 这 n 个数摆成一个链,要求相邻的两个数的和是一个素数。

编程要求
请在右侧编辑器Begin-End处补充代码,完成本关任务,输出格式请参考测试集。

测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:15
预期输出:摆成的链是: 15 14 9 10 13 6 11 12 7 4 3 8 5 2 1

开始你的任务吧,祝你成功!

package step3;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Prime {// 判断一个数是否为素数private static boolean isPrime(int num) {if (num < 2) {return false; // 小于2的数不是素数}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return false; // 如果能被整除,则不是素数}}return true; // 否则是素数}// 判断两个数是否可以相连(即它们的和是否为素数)private static boolean canLink(int a, int b) {return isPrime(a + b); // 返回两个数之和是否为素数}// 寻找一个长度为n的链,链中的每两个相邻元素的和都是素数private static List<Integer> findChain(int n) {List<Integer> result = new ArrayList<>(); // 存储结果链boolean[] used = new boolean[n + 1]; // 标记数组,记录哪些数已经被使用// 从n开始向下寻找第一个未使用的数,并将其加入链中for (int i = n; i >= 1; i--) {if (!used[i]) {result.add(i); // 将未使用的数加入链中used[i] = true; // 标记该数为已使用break; // 跳出循环}}// 继续寻找链中的下一个数,直到链的长度达到nwhile (result.size() < n) {int last = result.get(result.size() - 1); // 获取链中的最后一个数boolean found = false; // 标记是否找到下一个数for (int next = n; next >= 1; next--) {if (!used[next] && canLink(last, next)) {// 如果找到一个未使用且可以与最后一个数相连的数,将其加入链中result.add(next);used[next] = true; // 标记该数为已使用found = true; // 标记找到下一个数break; // 跳出循环}}if (!found) {// 如果没有找到下一个数,返回空链return new ArrayList<>();}}return result; // 返回找到的链}public static void main(String[] args) {Scanner scanner = new Scanner(System.in); // 创建Scanner对象用于读取用户输入int n = scanner.nextInt(); // 从用户输入中获取n的值List<Integer> chain = findChain(n); // 寻找长度为n的链System.out.print("摆成的链是: "); // 打印提示信息for (int num : chain) {System.out.print(num + " "); // 打印链中的每个数}System.out.println(); // 换行scanner.close(); // 关闭Scanner}
}

http://www.mrgr.cn/news/65758.html

相关文章:

  • VSCode 1.82之后的vscode server离线安装
  • Django ORM详解:事务与F、Q函数使用
  • Jest进阶知识:模拟 ES6 类 - 掌握类的依赖模拟与方法监听技巧
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑时空非均匀的特高压阀侧套管数字孪生模型降阶算法研究 》
  • 如何修改WordPress经典编辑器的默认高度?
  • 如何在 React 前端使用 Input 输入框的样式上传一个 Excel 文件,并读取文件内容转成 json 数据格式(对象数组)
  • (十二)JavaWeb后端开发——MySQL数据库
  • 【JAVA】第1关:非递归实现皇后问题
  • 危机来临前---- 力扣: 876
  • 【AI日记】24.11.04 ANN和HNSW算法的代码实现
  • Android音频进阶之PCM设备创建(九十三)
  • Cesium的PickModel浅析
  • multKAN
  • 【基于LSM的ELF文件安全模块设计】参考
  • 【SpringBoot实践】编写一个自定义的starter,简单聊聊自动装配原理
  • 【强化学习理论基础-通用】(13)从零开始白话给你讲[数学原理]:蒙特卡洛(MC Basic),model-base 到 model-free 关键之处
  • Redis-“自动分片、一定程度的高可用性”(sharding水平拆分、failover故障转移)特性(Sentinel、Cluster)
  • Vue全栈开发旅游网项目(5)-景点详情模块API接口设计
  • 【论文速看】DL最新进展20241104-自动驾驶、图像超分、目标检测
  • Centos7.6离线安装软件
  • Flutter UI架构(3)
  • 2024年11月1日——世间轮回
  • Diffusion Model
  • Linux高阶——1103—修改屏蔽字信号到达及处理流程时序竞态问题
  • 论文翻译 | Evaluating the Robustness of Discrete Prompts
  • vulhub之phpmyadmin