【C语言必刷题】4. 打印100~200之间的素数

在这里插入图片描述

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!


文章目录

  • 🔥 题目描述
  • 🔥 解题思路
  • 🔥代码

🔥 题目描述

使用C语言写一个程序打印100~200之间的的素数,数字中间使用空格分割。

🔥 解题思路

素数是指只能被1和它本身整除的正整数。我们可以遍历100~200,并找出那些数字是素数。

  1. 试除法:从 2x-1 ,逐个尝试是否能整除 x,如果能,x就不是素数,否则 x 是素数

    优化代码:当 x 为偶数时,x 一定不是素数,因此在遍历时我们可以跳过每个偶数

  2. 试除法时间优化:

    • 2x-1 中存在某个数 t 可以整除 x 时,令 d = x/t,则 d 也可以整除 x,并且结果为 t。因
      此,当 2~ x \sqrt[]x x 中不存在可以整除x的数时, x + 1 \sqrt[]x+1 x +1​~ x 也不存在可以整除 x 的数。

    • 利用反证法证明:

      1. 假设 2x-1 中不存在可以整除 x 的数, x + 1 \sqrt[]x+1 x +1~x 中存在⼀个数 d 可以整除 x

      2. 存在另⼀个数 t=x/d 也可以整除 x

      3. t*d=x,因为 d> x \sqrt[]x x ,所以 t< x \sqrt[]x x ,即 2x-1 中存在某个数 t 可以整除 x

      4. 与假设矛盾,反证成成立。

🔥代码

#include <stdio.h>int main()
{int i = 0;for (i = 100; i <= 200; i++) // 遍历100到200之间的每个数{int flg = 1; // flg用于标记是否为素数,初始假设为素数int j = 0;for (j = 2; j < i; j++) // 遍历2到i-1之间的每个数{if (i % j == 0) // 若i能被j整除,则i不是素数{flg = 0; // 修改flg标记为0,表示i不是素数break;    // 退出内层循环,无需继续判断}}if (flg != 0) // 若flg为1,表示i是素数{printf("%d ", i); // 输出素数i}}return 0;
}// 优化1
#include <stdio.h>int main()
{int i = 0;for (i = 101; i <= 200; i += 2) // 从101开始,每次增加2,遍历101到200之间的每个奇数{int flg = 1; // flg用于标记是否为素数,初始假设为素数int j = 0;for (j = 2; j < i; j++) // 遍历2到i-1之间的每个数{if (i % j == 0) // 若i能被j整除,则i不是素数{flg = 0; // 修改flg标记为0,表示i不是素数break;    // 退出内层循环,无需继续判断}}if (flg != 0) // 若flg为1,表示i是素数{printf("%d ", i); // 输出素数i}}return 0;
}// 优化2
#include <stdio.h>
#include <math.h>int main()
{int i = 0;for (i = 101; i <= 200; i += 2) // 从101开始,每次增加2,遍历101到200之间的每个奇数{int flg = 1; // flg用于标记是否为素数,初始假设为素数int j = 0;for (j = 2; j <= sqrt(i); j++) // 遍历2到sqrt(i)之间的每个数{if (i % j == 0) // 若i能被j整除,则i不是素数{flg = 0; // 修改flg标记为0,表示i不是素数break;    // 退出内层循环,无需继续判断}}if (flg != 0) // 若flg为1,表示i是素数{printf("%d ", i); // 输出素数i}}return 0;
}

运行结果:

image-20240220101541474

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

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

相关文章

python中类属性与实例属性

类属性与实例属性的区别&#xff1a; 类属性&#xff1a; 是与类相关联的属性&#xff0c;在类级别上定义&#xff0c;对于所有该类的实例来说都是相同的。可以通过在类的内部直接定义赋值来创建类属性。 Example: class MyClass:class_attribute "This is a class a…

PaddleSeg分割框架解读[01] 核心设计解析

文章目录 PaddleSeg分割框架解读[01] 核心设计解析tools/train.pypaddleseg/cvlibs/config.pypaddleseg/cvlibs/builder.pypaddleseg/cvlibs/manager.pyPaddleSeg分割框架解读[01] 核心设计解析 tools/train.py import argparse import random import numpy as np import cv2…

Linux调优指南

更多相关知识可以阅读&#xff1a; https://www.yuque.com/treblez/qksu6c/yxl59pkvczqot9us https://www.yuque.com/treblez/qksu6c/nqe8ip59cwegl6rk 本文不会讲解基础知识。 CPU 设置调度器 这几个调度类的优先级如下&#xff1a;Deadline > Realtime > Fair 如果你…

频谱仿真平台HTZ Communications为私有5G建设铺平道路

韩国的国家监管机构韩国通信委员会&#xff08;KCA&#xff09;计划在德思特频谱仿真平台HTZ Communications的支持下加快扩大无线电接入范围&#xff0c;提升全国电信服务的质量和效率。 韩国通信委员会&#xff08;KCA&#xff09;在韩国的监管环境中扮演着至关重要的角色&am…

单例模式双端检测详解

正确写出doublecheck的单例模式_double check单例模式-CSDN博客

《C++ Primer Plus》《5、循环和关系表达式》

文章目录 1 for循环1.1for循环的组成部分1.2回到for循环1.3修改步长1.4使用for循环访问字符串1.5递增运算符和递减运算符1.6副作用和顺序点&#xff08;了解&#xff09;1.7前缀格式和后缀格式1.8递增/递减运算符和指针1.9组合赋值运算符1.10复合语句&#xff08;语句块&#x…

设计模式: 建造者模式

文章目录 一、什么是建造者模式二、建造者模式的结构三、使用场景案例分析1、使用场景2、案例分析 一、什么是建造者模式 建造模式通过一步一步的去构建一个复杂的对象。该模式将对象的构建细节封装在一个独立的建造者类中&#xff0c;使得客户端代码可以根据需要定制对象的构…

cRIO9040中NI9381模块的测试

硬件准备 CompactRIO9040NI9381直流电源&#xff08;可调&#xff09;网线 软件安装 下载地址 LabVIEW Real-Time 模块 NI CompactRIO 设备驱动程序 LabVIEW FPGA 模块&#xff08;可选&#xff09; 仅以下情况需要LabVIEW FPGA模块&#xff1a; 想为CompactRIO终端设计FP…

Gitlab操作流程

阶段1-构建账户信息 1.1 管理员分配账户 方式1-推荐 企业正常使用gitlab时&#xff0c;一般由项目经理(超级管理员)手动创建开发者账户信息&#xff0c;然后将账户发送给开发者&#xff0c;以便登录使用&#xff1b; 流程如下&#xff1a; 点击创建用户按钮&#xff1b; 创…

spring-orm:6 HibernateJpaVendorAdapter源码解析

版本 spring-orm:6.1.3 源码 org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter {// 旧版本Hibernate的方言类是否存在标识private static final boolean oldDialectsPresent Clas…

顶顶通实时质检系统如何添加词库

文章目录 前言联系我们步骤1. 导入系统预置词库2. 手动添加词库 在实时质检时如何质检到词库 前言 本篇文章主要讲解顶顶通实时质检系统如何添加词库。 词库添加的方式&#xff1a; 导入系统预置词库手动添加词库 联系我们 有意向了解实时质检系统的用户&#xff0c;可以点击…

邦芒支招:6个建议帮你找到合适的工作

说起来&#xff0c;今年找工作对很多毕业生确实不利&#xff0c;受大环境影响&#xff0c;很多小微企业难以为继&#xff0c;甚至大企业也在缩减人员&#xff0c;人才需求量总体降低了&#xff0c;但是&#xff0c;毕业生那么多&#xff0c;导致有一部分大学生迟迟找不到工作。…

web基础及http协议 (二) apache

一、httpd 安装组成 http 服务基于 C/S 结构 1 .常见http 服务器程序 httpd apache&#xff0c;存在C10K&#xff08;10K connections&#xff09;问题 nginx 解决C10K问题lighttpd IIS .asp 应用程序服务器 tomcat .jsp 应用程序服务器 jetty 开源的servlet容器&#xf…

[SSD 测试 1.3] 硬件测试之主控测试用例

专栏 《深入理解SSD》 主控制器方面,消费级市场的主要厂商包括三星、英特尔、西部数据、海力士和东芝,他们的产品涵盖了SATA和Nvme Pcie3.0/4.0接口。而在企业级市场,国内厂商华为海思H181x系列也有存在。在实际速度方面,该速度会受到制程及后端Nand Flash接口速率和通道数…

Postgresql源码(124)两个事务更新同一行数据时的行为和原理分析

XactLockTableWait函数、transactionid锁的一些原理和分析 结论 更新行时&#xff0c;会根据xmax拿transactionid锁&#xff0c;等对应的事务结束。 如果结束是回滚&#xff0c;则heap_update继续更新。如果结束时提交&#xff0c;则heap_update要返回上层ExecUpdate调用EvalP…

用Dockerfile创建PostgreSQL数据库

官网下载基本镜像 [rootlocalhost ~]# docker pull postgres:latest创建项目目录 [rootlocalhost ~]# mkdir /root/postgresql创建一个名为 “Dockerfile” 的文件 [rootlocalhost ~]# vim Dockerfile # 使用官方的PostgreSQL镜像 FROM postgres:latest# 设置环境变量&#…

10款ai文生图软件/网站推荐

1. Ai-Chat 推荐指数&#xff1a;⭐⭐⭐⭐ 链接&#xff1a; https://mmm.aiyujiang.com/ 上传图片并输入AI提示词就能一键生成各类动漫、卡通风格头像&#xff0c;算法强大&#xff0c;风格多样&#xff0c;一键开启你的AI自由创作之旅。有电脑版和手机版&#xff0c;也是很…

大数据信用报告查询方式一般有几种?哪种比较好?

在了解这个问题之前&#xff0c;想必你对大数据信用与人行信用的区别都是比较清楚了&#xff0c;本文呢就着重讲一下大数据信用报告查询方式有几种&#xff0c;哪种比较好&#xff0c;感兴趣的朋友不妨一起去看看。 大数据信用报告常见的三种查询方式&#xff1a; 一、二维码分…

手持三防平板丨国产化加固平板丨国产三防平板发展的意义是什么?

随着现代科技的快速发展&#xff0c;平板电脑在我们的生活中扮演着越来越重要的角色。然而&#xff0c;传统的平板电脑只能在普通的环境中使用&#xff0c;而无法在恶劣的环境中使用&#xff0c;例如在高海拔、高温、高湿度、沙漠等环境中&#xff0c;传统平板电脑往往会出现故…

目标检测教程视频指南大全

魔鬼面具-哔哩哔哩视频指南 必看干货系列(建议搞深度学习的小伙伴都看看,特别是图像相关) 深度学习常见实验问题与实验技巧(适用于所有模型&#xff0c;小白初学者必看!)还在迷茫深度学习中的改进实验应该从哪里开始改起的同学&#xff0c;一定要进来看看了&#xff01;用自身…