算法-合并素数

给一个数组,每次操作可以把相邻的两个素数元素进行合并,
合并后的新数为原来的两个数之和,并删除原来两个数。现在希望最终数组的元素数量尽可能少。

输入
第一行 n 代表数组元素个数
第二行 数组的各个元素
4
7 2 2 3
输出
最终的个数
1

package org.example.XC;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {
}class Three {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();List<Integer> numbers = new ArrayList<>();// 读取数组元素for (int i = 0; i < n; i++) {numbers.add(scanner.nextInt());}// 关闭Scannerscanner.close();for (int i = 0; i < numbers.size(); ) {if (isSu(numbers.get(i))) { // if (numbers.get(i)==2) {// ///if (i > 0 && isSu(numbers.get(i - 1)) && isSu(numbers.get(i - 1) + numbers.get(i))) {numbers.set(i - 1, numbers.get(i) + numbers.get(i - 1));numbers.remove(i);} else if (i < numbers.size() - 1 && isSu(numbers.get(i + 1)) && isSu(numbers.get(i) + numbers.get(i + 1))) {numbers.set(i, numbers.get(i) + numbers.get(i + 1));numbers.remove(i + 1);} else {i++;}} else {i++;}}for (int i = 0; i < numbers.size() - 1; i++) {if (isSu(numbers.get(i)) && isSu(numbers.get(i + 1))) {numbers.set(i, numbers.get(i) + numbers.get(i + 1));numbers.remove(i + 1);}}System.out.println(numbers.size());}static boolean isSu(int num) {if (num <= 1) return false;for (int i = 2; i <= Math.sqrt(num); i++) {if (num % i == 0) {return false;}}return true;}
}

第二种

如数组 7 2 2 3,当遇到第一个二时,是不能进行合并的,为了得到最短的结果,我们会使用第二个2和3进行合并,这时,我们就要回退到上一个邻接判断是否为2,再以此个2进行左右合并判断。
第一种方法也可以解决这种问题,但要每个元素进行左右判断,更费时。

class Three2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();List<Integer> numbers = new ArrayList<>();// 读取数组元素for (int i = 0; i < n; i++) {numbers.add(scanner.nextInt());}// 关闭Scannerscanner.close();for (int i = 0; i < numbers.size(); ) {if (numbers.get(i) == 2) {if (i > 0 && isSu(numbers.get(i - 1)) && isSu(numbers.get(i - 1) + numbers.get(i))) {numbers.set(i - 1, numbers.get(i) + numbers.get(i - 1));numbers.remove(i);i--;} else if (i < numbers.size() - 1 && isSu(numbers.get(i + 1)) && isSu(numbers.get(i) + numbers.get(i + 1))) {numbers.set(i, numbers.get(i) + numbers.get(i + 1));numbers.remove(i + 1);i--; //回退 看前一位是不是没用使用过的2} else {i++;}} else {i++;}}for (int i = 0; i < numbers.size() - 1; i++) {if (isSu(numbers.get(i)) && isSu(numbers.get(i + 1))) {numbers.set(i, numbers.get(i) + numbers.get(i + 1));numbers.remove(i + 1);}}System.out.println(numbers.size());}static boolean isSu(int num) {if (num <= 1) return false;for (int i = 2; i <= Math.sqrt(num); i++) {if (num % i == 0) {return false;}}return true;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue项目打包时因为图片问题报错

执行 npm run build命令打包项目时报错&#xff0c;看起来是图片的问题&#xff1a; package.json里面image-webpack-loader的版本是^7.0.1 解决方案&#xff1a; 1、先卸载 npm uninstall image-webpack-loader 2、用cnpm重新安装 cnpm install image-webpack-loader --save…

PLSQL程序块中的无名块

文章目录 PLsql ---过程化语言程序块&#xff1a;无名块变量利用 select into 语句给变量赋值 打印输出手动输入变量类型引用型变量类型%TYPE%ROWTYPE 记录型变量类型 在程序块下的增删改RETURNING INTO增加数据修改数据删除数据 PLsql —过程化语言 程序块 plsql是Oracle默认…

单细胞+RIP-seq项目文章| Cell ReportshnRNPU蛋白在小鼠精原干细胞池建立的关键作用

精原干细胞&#xff08;SSCs&#xff09;是负责精子发生的干细胞&#xff0c;具有自我更新和分化产生功能性精子的能力。SSCs的持续再生对于维持雄性生育力至关重要。然而&#xff0c;SSC池的发育起源尚不清楚。在哺乳动物中&#xff0c;SSCs源自名为 prospermatogonia&#xf…

Android Studio开发工具学习之Git远程仓库拉取与推送

Git远程仓库操作 1.1 推送项目到远端服务器1.1.1 进入Gitee或Github、创建一个新的仓库1.1.2 将Android Studio中项目推送至Gitee 1.2 从远端服务器拉取项目1.2.1 AS工程页拉取新项目1.2.2 AS启动页拉取项目 1.1 推送项目到远端服务器 1.1.1 进入Gitee或Github、创建一个新的仓…

微服务两种方式登录

目录 1.restTemplate方式 1.1页面 1.2消费者 1.3生产者 1.4效果 2.Feign方式 2.1Service 2.2生产者 三个生产者 一个消费者&#xff0c;三个生产者需要用mysqlmybatis 三个不同的数据库。 页面输入用户名和密码&#xff0c;提交到后端消费者&#xff0c;消费者传到生产…

RabbitMQ入门实战

文章目录 RabbitMQ入门实战基本概念安装快速入门单向发送多消费者 RabbitMQ入门实战 官方&#xff1a;https://www.rabbitmq.com 基本概念 AMQP协议&#xff1a;https://www.rabbitmq.com/tutorials/amqp-concepts.html 定义&#xff1a;高级信息队列协议&#xff08;Advanc…

让流程图动起来

我们平时画流程&#xff0c;然后贴到文档&#xff0c;就完事了。但是过程演示的时候&#xff0c;如果只是一张静态图&#xff0c;很难吸引到听众的注意力&#xff0c;表达效果并不太好。常用的方法是可以用PPT进行动态演示&#xff0c;做PPT也是需要花一些时间&#xff0c;同时…

7、OpenCompass 大模型评测实战

0、为什么要研究大模型的评测&#xff1f; 首先&#xff0c;研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多个通用任务上已经达到或超越了人类水平&#xff0c;但仍然存在质疑&#xff0c;即这些模型的能力是否只是对训练数据的…

【数据结构(邓俊辉)学习笔记】向量01——接口与实现

文章目录 0.意图1、概述2 从数组到向量3 向量ADT接口4 Vector 模板类5 构造与析构5.1默认构造方法5.2基于复制的构造方法5.3 析构方法 0.意图 一方面是将工作学习中零星的知识点串起来&#xff0c;另一方面向量是其他数据类型的基础&#xff0c;比如栈队列等&#xff0c;所以基…

分享4张亚马逊云科技AWS免费云开发和AI证书(有答案)

今天给大家带来特别福利&#xff0c;一口气带来亚马逊云科技AWS4张免费云开发/AI证书(有Credly徽章&#xff0c;有答案)&#xff0c;这四门都是云开发相关的硬核知识&#xff0c;含金量极高。 主要考察如何用AWS AI服务进行开发、以及当下热门的云原生改造&#xff0c;16道题80…

.NET 高级开发人员面试常见问题及解答

当面试.NET高级开发人员时&#xff0c;面试官通常会围绕技术深度、问题解决能力、项目经验以及编程理念等方面提出问题。以下是20个常见的面试问题及其详细解答&#xff1a; 问题&#xff1a;请简述ASP.NET MVC的工作原理&#xff1f; 解答&#xff1a;ASP.NET MVC是一个基于MV…

哪家券商有快速通道?

其实我们日常股票交易我们就是在单纯的股票交易&#xff0c;却没有了解过&#xff0c;那些私募&#xff0c;游资&#xff0c;打板为什么还能比我们更快&#xff0c;这些都是来源与快速通道。今天小编带你们一起来科普下&#xff01;一&#xff1a;提高交易速度&#xff0c;主要…

Skill Check: Build an LLM Application using OCI Generative AI Service

Skill Check: Build an LLM Application using OCI Generative AI Service

const enum inline去替代宏

在C中&#xff0c;const、enum和inline关键字可以用来替代宏&#xff08;#define&#xff09;的一些功能&#xff0c;以提高代码的安全性和可维护性。以下是它们的用途和如何使用它们来替代宏&#xff1a; const const关键字用于定义常量。它不仅可以定义整数常量&#xff0c;…

基于模糊控制的电动汽车锂电池SOC主动均衡电路MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 模型在 Matlab/Simulink仿真平台中搭建16节电芯锂电池电路模型&#xff0c;主要针对电动车锂电池组SOC差异性&#xff0c;采用模糊控制算法动态调节均衡电流&#xff0c;以减少均衡时间和能量损耗。…

Python全栈开发前端与后端的完美融合

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在当今互联网时代&#xff0c;全栈开发已经成为了一种趋势。全栈开发者具备前端和后端开发的…

java Web-Spring AOP

AOP的概念 AOP:面向切面编程&#xff0c;面向方法编程。简单理解就是对特定方法的扩充的思想 例如我们要在特定方法进行方法的执行时间判断&#xff0c;我们假如去使用在每个方法去进行业务逻辑扩充&#xff0c;这样就太繁琐了&#xff0c;而使用AOP就可以简化操作。Spring A…

Pytorch 学习路程 - 1:入门

目录 下载Pytorch 入门尝试 几种常见的Tensor Scalar Vector Matrix AutoGrad机制 线性回归尝试 使用hub模块 Pytorch是重要的人工智能深度学习框架。既然已经点进来&#xff0c;我们就详细的介绍一下啥是Pytorch PyTorch 希望将其代替 Numpy 来利用 GPUs 的威力&…

Python网络爬虫项目开发实战:怎么处理下载缓存

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python网络爬虫项目开发实战_下载缓存_编程案例解析实例详解课程教程.pdf 一、下载缓存的简介 在网络爬虫项目开发中,下载缓存是一个重要的优化手段,…

.net6项目模板搭建教程

1.集成log4net 安装如下扩展依赖即可&#xff0c;已经包含了log4net依赖&#xff1a; Microsoft.Extensions.Logging.Log4Net.AspNetCore 添加日志配置文件&#xff1a; 日志配置文件属性设置为始终复制&#xff1a; 注入服务&#xff1a; #region 注入log4net日志服务build…