LeetCode--所有质数、质数对

1.0 Q: 输出 100 以内所有质数

1.1

/* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数
*/boolean isPrime = true;for (int i = 2; i <= 100; i++) {for (int j = 2; j < i; j++) {if ( i % j == 0 )isPrime = false;}if(isPrime == true)System.out.println();

存在的问题

  • 第二层循环中 j < i 次数太多了
    例如,检查 20 是不是质数。用 20 除 1/2/3/…,但是,除到 10 就可以停止了,因为用 20 除 11/12是没有意义的,是一定不能整除的,不影响质数判断。
  • 在每次外层循环开始时,将 isPrime 重置为 true,确保对每个数字i的新检查都是从假设它是质数开始的。在错误的版本中,由于没有刷新这个状态,导致从第一个不是质数的数开始,就一直是 false 到结束了。
  • 添加 break 语句,在发现非质数时立即退出内层循环,避免不必要的迭代。

1.2

boolean isPrime = true; for (int i = 2; i <= 100; i++) {isPrime = true; // 每次检查新数时,需要重置isPrime为true//除到自己的一半大的数就可以停止,继续是没有意义的.for (int j = 2; j < i/2; j++) {if (i % j == 0) { isPrime = false; break; // 一旦确定不是质数,就跳出循环,提高效率}}if (isPrime) { System.out.println(i); }
}

2. 找 100 以内两两相邻的、且差值于2的质数对

例如 (3,5)(5,7)(11,13)

  • 思路 1 :先找出所有质数,顺序装入数组。用 for 循环遍历,只要 prime[i]+ 2 == primes[i+1],就输出这两个数
  • 思路 2:每次找出一个质数 i,就直接判断 i + 2 是不是质数,如果也是,那就输出这两个数

这里实现思路 2.

  • 相对与第一题,这里还有一个改进。那就是提前用 num = i 接住最外层的循环值(检查到哪个数了)
    for (int i = 2; i <= 100; i++) {boolean isPrime = true;for (int j = 2; j < i / 2; j++) {if (i % j == 0) {isPrime = false;}}if (isPrime) {i += 2;boolean isPrime2 = true;for (int k = 2; k <= i / 2; k++) {if (i % k == 0) {isPrime2 = false;}}if (isPrime2)System.out.println(i + "," + (i - 2));}}

在这里插入图片描述
对于输出结果来说,显然不对,(3,5)被忽略了。

分析:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到,第一轮检查 2 时,是正常的。即检查 2 是质数后,将 i + 2,检查 4 不是质数, 所以不输出。接下来应当检查 3 。
但是,由于 i + 2 这个操作仍是在最外层循环内做的,因此这个操作会将这个改变带到下一次的大循环,直接来说就是下一次不检查 3 了,变成检查 5 了

    for (int i = 2; i <= 100; i++) {//要使用且改变外层循环的层数,预先定义一个变量来接收,这样就不会影响到外层循环int num = i;boolean isPrime = true;for (int j = 2; j < num / 2; j++) {if (num % j == 0) {isPrime = false;}}if (isPrime) {num += 2;boolean isPrime2 = true;for (int k = 2; k <= num / 2; k++) {if (num % k == 0) {isPrime2 = false;}}if (isPrime2)System.out.println(num + "," + (num - 2));}}

在这里插入图片描述

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

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

相关文章

如何彻底将CAD或者Cadence卸载干净

最近因为升级软件需要先彻底删除这两个软件&#xff0c;发现无论如何都不能卸载干净&#xff0c;于是乎找到这样一个软件帮助卸载或查找剩余的软件残留&#xff1a; 官网&#xff1a;https://geekuninstaller.com 支持软件和 UWP 应用的卸载&#xff0c;查看软件注册表和安装目…

[leetcode] 68. 文本左右对齐

文章目录 题目描述解题方法贪心java代码复杂度分析 题目描述 给定一个单词数组 words 和一个长度 maxWidth &#xff0c;重新排版单词&#xff0c;使其成为每行恰好有 maxWidth 个字符&#xff0c;且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词&#xff…

The 2024 International Collegiate Programming Contest in Hubei Province, China

目录 H. Genshin Impact Startup Forbidden III K. Points on the Number Axis B 估计还会补D&#xff0c;I H. Genshin Impact Startup Forbidden III 对于一个有鱼的池塘&#xff0c;有周围与自己本身五个关键位置可以捕获当前位位置的鱼。把这些位置存储到 map中。用四进制…

深入理解京东商品搜索API(jd.item_search)返回值结构

京东商品搜索API&#xff08;jd.item_search&#xff09;的返回值结构通常是一个复杂的JSON对象&#xff0c;它包含了关于搜索结果的详细信息。为了深入理解这个返回值结构&#xff0c;我们可以将其大致分解为几个主要部分。 status: code: 响应状态码&#xff0c;通常200表示成…

新品 | 功率放大器高压放大测试器HAP-4001

400V功率放大器是一台非常实用的讯号放大器&#xff0c;它具有体积小、重量轻及操作方便&#xff0c;较高的电压输出(400Vp-p)以及较大的输出电流&#xff08;2.8Ap-p&#xff09;等优点。 HAP-4001连续输出直流电流量最大值达到0.5 A&#xff0c;电压放大增益40倍&#xff0c…

OSI七层模型

ISO为了更好的使网络应用更为普及&#xff0c;推出了OSI参考模型。 &#xff08;1&#xff09;应用层 OSI参考模型中最靠近用户的一层&#xff0c;是为计算机用户提供应用接口&#xff0c;也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有&#xff1a;HTTP&…

Echarts柱状图横坐标不显示

本人遇到的问题&#xff1a;折线图横坐标可以正常显示 柱状图接收一样的数据在横坐标却显示不了 1.在前端打印是否能够正常接收数据、数据类型是否有误以及数据是否有内容 console.log(typeof optionbar.xAxis.data)console.log(optionbar.xAxis.data) 2.如上确定能够接收到数…

netty 高性能架构设计--零拷贝

文章目录 前言一、直接内存1.1 什么是直接内存1.2 代码实现1.3 使用直接内存的优缺点 二、netty 零拷贝设计2.1 netty 直接内存2.2 netty 内存池 三、零拷贝的两种方式 前言 本篇从源码层面剖析 netty 高性能架构设计之零拷贝&#xff0c;并且扩展讲述零拷贝的两种实现方式。 …

有没有不使用技术分析工具的?众汇10年交易经验发现还真有

不知道各位投资者有没有遇见过不使用技术分析工具的投资者&#xff0c;众汇用自己的10年外汇交易经验保证&#xff0c;别不信还真有&#xff0c;并且不在少数。 其实道理很简单&#xff0c;这些投资者不相信技术分析工具的效率!在这些投资者看来技术分析工具通常比较滞后、需要…

前置知识储备

基本认知 什么是模式 在一定环境中解决一些问题的方案&#xff08;通俗来说&#xff1a;特定环境中用固定的套路解决问题&#xff09; 什么是设计模式 设计模式是一套反复被人使用&#xff0c;多数人知晓的&#xff0c;经过分类编目的代码设计经验的总结 设计模式最终的目…

2024蓝桥杯CTF writeUP--缺失的数据

压缩包的内容 里面有secret.txt文件&#xff0c;用ARCHPR工具套上字典&#xff0c;爆破压缩包密码。密码为pavilion 解压得到原图&#xff0c;并且有了加密后的图片&#xff0c;根据代码里的key和参数直接运行脚本解密水印图片&#xff1a; import cv2 import numpy as np imp…

【Golang】VSCode进行GO的调试

原来的launch.json {"version": "0.2.0","configurations": [{"name": "Golang","type": "go","request": "launch","program": "${workspaceFolder}","…

CopyClip for Mac - 高效复制粘贴,轻松管理剪贴板

CopyClip for Mac&#xff0c;一款专为Mac用户打造的剪贴板管理工具&#xff0c;让你在复制粘贴的日常任务中&#xff0c;享受到前所未有的高效与便捷。 它常驻在菜单栏中&#xff0c;时刻准备为你服务。一旦你复制了内容&#xff0c;CopyClip就会自动将其保存至历史记录中&…

为什么Qt这么强大却不受欢迎?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;虽然这个问题并不被广泛讨论&#xff0c;但我根…

docker-compose安装es+kibana 8.12.2

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;我又回来辣&#xff0c;几个月不见甚是想念啊&#xff01;&#xff01;&#xff01; 因云平台需要改造&#xff0c;es7升级为es8&#xff0c;所以记录一下&#xff0c;es8需要开启ssl认证&#xff0c;需要配置证书…

项目1:STM32+DHT11+FreeRTOS+emwin+LCD

【屏幕显示DHT11数据】 面向对象的思想编写硬件驱动程序&#xff0c;DHT11采集环境中的温湿度数据。使用FreeRTOS提供的任务间通信、同步、互斥&#xff0c;将DHT11的数据传递给显示任务。显示任务中&#xff0c;使用emWin中间件&#xff0c;制作屏幕的各种界面&#xff0c;并将…

基于零一万物多模态大模型通过外接数据方案优化图像文字抽取系统

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

vue3+ts+vant选择器选中文字效果

所需要的样式: 选中某个选项后文字有放大和改变颜色的效果 主要就是在van-picker上加class, 给对应的style样式即可 <van-pickerclass"custom-picker":title"pickerData.titleText"v-if"pickerData.ispicker"show-toolbar:columns"col…

今日刷三题(day11):不同路径的数目(一)+短距离最小路径和+把数字翻译成字符串

题目一&#xff1a;不同路径的数目&#xff08;一&#xff09; 题目描述&#xff1a; 一个机器人在mn大小的地图的左上角&#xff08;起点&#xff09;。机器人每次可以向下或向右移动。机器人要到达地图的右下角&#xff08;终点&#xff09;。可以有多少种不同的路径从起点…

ICME2024 | 基于半监督对比学习的表现力语音合成

人类的语音极富表现力&#xff0c;不仅包括语调和重读&#xff0c;还包括风格和情感等多种元素。表现力语音合成的目标是要精准捕捉并再现这些元素。先前表现力语音合成方面的研究通常将表现力视为单一维度&#xff0c;如风格或情感。但实际上&#xff0c;风格可以随着文本和场…