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.mfbz.cn/a/601624.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

终于找到微信聊天记录SQLite数据库文件解密方法了,一起来看看吧!

https://github.com/xuchengsheng/ 获取当前登录微信的微信昵称、账号、手机号、邮箱、秘钥、微信Id、文件夹路径 将微信PC的多个聊天记录数据库合并为单一数据库文件 支持微信聊天对话窗口&#xff08;文本消息&#xff0c;引用消息&#xff0c;图片消息&#xff0c;表情消息…

STM32(六):定时器PWM呼吸灯 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的TIMER定时器来控制LED灯的交替闪烁&#xff0c;实现了点灯的第五种方式。这篇文章我们来介绍一下如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。 一、实验原理 关于定时器这边就不多加赘述&#xff0c;详细请看上…

【吊打面试官系列】Java高并发篇 - 如何让正在运行的线程暂停一段时间?

大家好&#xff0c;我是锋哥。今天分享关于 【如何让正在运行的线程暂停一段时间&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 如何让正在运行的线程暂停一段时间&#xff1f; 我们可以使用 Thread 类的 Sleep()方法让线程暂停一段时间。需要注意的是&#x…

ROS1集成NanoSDK(mqtt over quic)库遇到的问题

集成方式&#xff0c;demo见附件 问题记录 ROS集成构建问题&#xff1a;如下图&#xff0c;少了依赖库导致未定义的符号

AMD优化策略

FPGA&#xff0c;英文全称是 Field Programmable Gate Array&#xff0c;中文意思是现场可编程门阵列。基本架构&#xff1a;可配置逻辑模块&#xff08;CLB&#xff1a; Configurable Logic Block&#xff09;、开关矩阵&#xff08;Switch Matrix&#xff0c;也称为 Switch B…

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代&#xff0c;Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及&#xff0c;以及物联网的普及和应用&#xff0c;Web3智能物联网作为二者的结合&#xff0c;将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

【JavaEE 初阶(三)】多线程代码案例

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.单例模式2.1饿汉方式2.2饿汉方式 3.阻塞队列3.1概念3.2实现 4.定时器4.1概念4.…

Linux常用名命令

Linux是一款免费的操作系统&#xff0c;用户可以通过网络或其他途径免费获得&#xff0c;并可以任意修改源代码&#xff0c;这是其他操作系统做不到的&#xff0c;Ubuntu&#xff0c;Centos。 linux中&#xff0c;一切皆文件。 一些重要的目录 / 根目录&#xff0c;所有文件都放…

2024-05-08 精神分析-对损失和挫败的强烈易感性-分析

摘要: 对损失的强烈的易感性&#xff0c;会在遭受损失或者挫败的时候&#xff0c;表现的极其敏感&#xff0c;这个过程主要是在创业的过程中更加强烈的表现并带来巨大的影响。必须要对其进行彻底的分析&#xff0c;并保持对此行为的长期的警惕。 所谓前事不忘后事之师&#x…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型&#xff0c;即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后&#xff0c;内核会去查看数据是否就绪&#xff0c;如果没有就绪就会等待数据就绪&#xff0c;而用户线程就会处于阻塞状态&#xff0c;用户线…

WIFI模块UDP电脑端调试

一&#xff0c;两端都是电脑端 1&#xff0c;电脑本机的IP地址 192.168.137.1 2&#xff0c;新建两个不同的连接&#xff0c;注意端口 二&#xff0c;WIFI 模块和电脑端连接 1&#xff0c;设置模块端目标IP和端口&#xff0c;电脑端只接收数据的话&#xff0c;IP、端口可随…

effective python学习笔记_pythonic思维

优缺点 书的好处是很多新特性提高了可读性代码性等各方面性能&#xff0c;缺点是新特性和py老版本不兼容&#xff0c;老版本可能没有这些新特性&#xff0c;如果用了py早期版本&#xff0c;需要考虑替代方案 查py版本 import sys sys.version sys.version_info 遵循PEP8 …

python turtle

名字动画 #SquareSpiral1.py import turtle t turtle.Pen() turtle.bgcolor("black")my_nameturtle.textinput("输入你的姓名","你的名字&#xff1f;") colors["red","yellow","purple","blue"] for…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑热动态的综合能源系统碳排放流建模与分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈智能电气火灾监控系统的设计及应用

摘要&#xff1a;致电气火灾的原因是多方面的&#xff0c;主要成因包括漏电、绝缘层老化、短路、电火花密集、接地发生故障、电气设备自然、接触不良和电流超负荷等。文章分析电气火灾的成因&#xff0c;并探索电气火灾监控系统的设计方案与注意事项。 关键词&#xff1a;电气…

【数据结构】闲谈A股实时交易的数据结构-队列

今天有点忙&#xff0c;特意早起&#xff0c;要不先写点什么。看到个股的红红绿绿&#xff0c; 突然兴起&#xff0c;要不写篇文章分析下A股交易的简易版数据结构。 在A股实时股票交易系统中&#xff0c;按照个人理解&#xff0c;大致会用队列来完成整个交易。队列&#xff08;…

WordPress原创插件:当日24小时发布文章标题变红

WordPress原创插件&#xff1a;当日24小时发布文章标题变红 <?php// 添加自定义样式 function title_red_plugin_styles() {$current_time time();$post_time get_the_time(U);$time_difference $current_time - $post_time;if ($time_difference < 86400) {echo&l…

SSH的魅力:为何它成为远程访问的首选

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SSH简介 2、SSH的历史与发展 3、SSH的主要用…
最新文章