【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,一经查实,立即删除!

相关文章

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…

《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; 创…

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

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

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;传统平板电脑往往会出现故…

图的遍历(广度优先遍历BFS,深度优先遍历DFS)

目录 图的遍历概念&#xff1a; 图的广度优先遍历&#xff08;BFS&#xff09;&#xff1a; 代码实现如下&#xff1a; 测试如下&#xff1a; 注意&#xff1a; 图的深度优先遍历&#xff08;DFS&#xff09;&#xff1a; 代码实现如下&#xff1a; 测试如下&#xff1…

Web服务器基础

Web服务器基础 【一】前端概述 【1】HTML HTML&#xff08;超文本标记语言&#xff09;是用于创建网页结构的标记语言。它定义了网页的骨架&#xff0c;包括标题、段落、列表、链接等元素&#xff0c;但没有样式。可以将HTML视为网页的结构和内容的描述。 【2】CSS css&…

阿里云服务器镜像是什么?如何选择镜像?

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

Go 是否有三元运算符?Rust 和 Python 是怎么做的?

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 技巧第十四篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 今天来聊聊在 Go 语言中是否支持三元运算符。这个问题很简单&#xff0c;没有。 首先&#xff0c;什么是三元运算符&#xff1f; 在其他一些编程语言中&a…

MySQL篇之分库分表

一、为什么要分库分表 1.目的 1. 分担了访问压力 2. 解决存储压力 2.分库分表的时机 1. 前提&#xff0c;项目业务数据逐渐增多&#xff0c;或业务发展迅速&#xff0c;单表的数据量达1000W或20G以后。 2. 优化已解决不了性能问题&#xff08;主从读写分离、查询索引…&am…

数据库管理-第152期 Oracle Vector DB AI-04(20240220)

数据库管理152期 2024-02-20 数据库管理-第152期 Oracle Vector DB & AI-04&#xff08;20240220&#xff09;1 常用的向量检索方法聚类图搜索哈希量化 2 Oracle Vector DB中的索引索引&#xff08;默认&#xff09; 索引&#xff08;高级&#xff09;3 EMBEDDINGSSQL EMBE…

阿里云备案服务器买哪种?多少钱?有什么限制条件?

在阿里云备案服务器需要多少钱&#xff1f;目前符合备案条件的阿里云服务器只要30元&#xff0c;并且这台云服务器可以备案5个网站。2核4G配置&#xff0c;价格为30元3个月&#xff0c;也可以选择2核2G轻量服务器&#xff0c;61元一年&#xff0c;阿里云老用户还可以选择99元一…

通俗易懂地理解稀疏性

今天我想与大家探讨的是一个数学和工程学中的重要概念——稀疏性。这个概念可能听起来很抽象&#xff0c;但它实际上贯穿于我们生活中的许多方面。那么&#xff0c;稀疏性到底是什么呢&#xff1f;简单来说&#xff0c;在数学和信号处理领域&#xff0c;一个信号被称为稀疏&…

Eclipse - Text Editors (文本编辑器)

Eclipse - Text Editors [文本编辑器] References Window -> Preferences -> General -> Editors -> Text Editors Displayed tab witdth: 4 勾选 Insert spaces for tabs 勾选 Show line number References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.n…