牛客网刷题 | BC81 KiKi求质数个数

news/2024/9/22 14:53:41/

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

输入描述:

输出描述:

一行,一个整数,表示所有三位整数中,有多少个质数。


思路 : 

理解质数:质数是指只能被1和它本身整除的大于1的自然数。例如,2、3、5、7等都是质数。

定义范围:题目要求找出所有三位整数中的质数个数,即我们需要检查的数的范围是从100到999。

判断质数:对于每一个数,我们需要判断它是否是质数。判断一个数是否是质数的常见方法是尝试除以所有小于或等于它的平方根的数。如果在这个范围内没有找到除数,那么这个数就是质数。

优化检查:由于我们知道所有质数除了2以外都是奇数,我们可以从3开始检查,并且每次增加2(跳过偶数),这样可以减少不必要的检查。

计数:对于每一个被判断为质数的数,我们增加计数器的值。

输出结果:在遍历完所有的三位整数后,输出计数器的值,这个值就是所有三位整数中质数的个数。


代码 1:

#include<stdio.h>
int main()
{int n=1;int count=0;for(int i=100;i<=999;i++){n=1;for(int j=2;j<i;j++){if(i%j==0){n=0;}}if(n){count++;}}printf("%d ",count);return 0;
}

 代码 2 :

#include <stdio.h>
int main() {方法1:求素数数量,总数减非素数数量int totalNum = (999 - 100) + 1;int count = 0;for (int i = 100; i < 1000; i++){for (int j = 2; j * j <= i; j++){if (i % j == 0){count++;break;}}}printf("%d\n", totalNum - count);/* 方法2:用flag标记,1为素数,0为非素数;默认flag为1,若在内循环i被j整除,则设flag为0,表示i为非素数;内循环判断完后判断flag值,flag为1则prime++;注意要将flag重置为1
*/int prime = 0, flag = 1;for (int i = 100; i < 1000; i++) {for (int j = 2; j * j <= i; j++) {if (i % j == 0) {flag = 0;break;}}if (flag == 1) {prime++;}flag = 1;}printf("%d\n", prime);/* 方法3:当j * j <= i时,i % j == 0,那么说明i能被j整除,i不是素数当j * j > i时,说明i % j != 0,说明i不能被j整除,i是素数注意除数j重置为2,因为j的作用域为整个外循环*/int cnt = 0;int i, j;for (i = 100; i < 1000; i++) {for (j = 2; j * j <= i; j++) {if (i % j == 0) {break;}}if (j * j > i) {cnt++;}// Reset divisorj = 2;}printf("%d\n", cnt);return 0;
}

代码 3 :

AI 写的

#include <stdio.h>
#include <math.h>// 函数声明,判断一个数是否为质数
int isPrime(int num);int main() {int count = 0; // 用于计数的变量for (int i = 100; i <= 999; i++) { // 遍历所有的三位整数if (isPrime(i)) { // 如果i是质数count++; // 计数器增加}}printf("%d\n", count); // 输出质数的个数return 0;
}// 函数定义,判断一个数是否为质数
int isPrime(int num) {if (num <= 1) return 0; // 小于等于1的数不是质数if (num == 2) return 1; // 2是质数if (num % 2 == 0) return 0; // 排除大于2的偶数for (int i = 3; i <= sqrt(num); i += 2) { // 从3开始,以2为步长遍历if (num % i == 0) return 0; // 如果num能被i整除,则不是质数}return 1; // 如果没有找到除数,则num是质数
}

知识点 : 

质数定义

质数是指只能被1和它本身整除的大于1的自然数。

循环结构

使用循环结构遍历指定范围内的所有整数。

条件判断

使用条件语句来判断一个数是否满足质数的条件。

函数设计

设计一个函数isPrime来判断一个整数是否是质数。

数学知识

利用数学知识优化质数判断过程,例如,只检查到该数的平方根。

迭代器步长

在循环中使用步长为2,只检查奇数,因为除了2以外,所有质数都是奇数。

平方根函数

使用sqrt()函数来获取一个数的平方根,减少不必要的计算。

模运算

使用%运算符来判断一个数是否能被另一个数整除。

控制流程

使用return语句从函数返回,以及结束程序的执行。

输入输出

使用printf()函数进行输出。

基本数据类型

使用基本数据类型int来存储整数。

变量声明与初始化

声明并初始化变量用于计数和循环控制。

代码结构

理解并实现程序的基本结构,包括主函数main和辅助函数。

算法效率

理解算法的时间复杂度,并尝试优化以提高效率。

 

  


http://www.ppmy.cn/news/1460262.html

相关文章

安卓中常见的UI控件

TextView&#xff08;文本视图&#xff09;EditText&#xff08;编辑文本&#xff09;Button&#xff08;按钮&#xff09;ImageView&#xff08;图像视图&#xff09;ImageButton&#xff08;图像按钮&#xff09;CheckBox&#xff08;复选框&#xff09;RadioButton&#xff…

设计模式——组合模式(Composite)

组合模式&#xff08;Composite Pattern&#xff09; 是一种结构型设计模式&#xff0c;它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 特点 表示整体与部分&#xff1a;组合模式允许你将对象组合成树形结构…

动态规划:力扣LCR 188. 买卖芯片的最佳时机

题目 数组 prices 记录了某芯片近期的交易价格&#xff0c;其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片&#xff0c;并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。 如果你不能获取任何利…

01 设计模式--单例模式

1. 单例模式 单例模式有两种实现方式&#xff1a; 1.1 饿汉模式&#xff08;Eager Initialization&#xff09;&#xff1a;在类加载时就创建单例实例&#xff0c;无论是否需要使用该实例。 饿汉模式在类加载时就创建单例实例&#xff0c;无论是否需要使用该实例。 饿汉模式…

揭秘高效引流获客的艺术:转化技巧大公开

在数字化营销的海洋中&#xff0c;每个企业都如同一艘努力航行的船&#xff0c;而流量便是推动船只前行的风帆。如何有效吸引并获取潜在客户&#xff0c;即所谓的“引流获客”&#xff0c;已成为企业市场营销策略中不可或缺的一环。本文将详细探讨几种实用且高效的引流获客技巧…

程序员工作中常见问题,你遇到过几个?

在赛博朋克2077玩后感中&#xff0c;我提到&#xff0c;即便是在严谨的机制下&#xff0c;依然可能出现让人匪夷所思或是贻笑大方的问题。 那么今天&#xff0c;就以后端程序员的视角&#xff0c;盘点下从设计开发到上线的常见问题&#xff0c;看看大家中过几个。 01 设计与开…

鸿蒙应用开发者高级认证指南及参考资料整理(含详细参考答案)

如何报名鸿蒙应用开发者高级认证 报名链接:点击这里进行报名。报名步骤: 点击上述链接进入报名页面。选择“立即报名”。在课程内容中找到“HarmonyOS应用开发者高级认证”,点击进入。点击“参加考试”,随后即可开始考试。考试注意事项 实名认证:考试前,请务必完成实名认…

前端怎么用 EventSource? EventSource怎么配置请求头及加参数? EventSourcePolyfill使用方法

EventSource EventSource 接口是 web 内容与服务器发送事件通信的接口。 一个 EventSource 实例会对 HTTP 服务器开启一个持久化的连接&#xff0c;以 text/event-stream 格式发送事件&#xff0c;此连接会一直保持开启直到通过调用 EventSource.close() 关闭。 EventSource…