【LeetCode每日一题】——204.计数质数

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时空频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 数组

二【题目难度】

  • 中等

三【题目编号】

  • 204.计数质数

四【题目描述】

  • 给定整数 n ,返回 所有小于非负整数 n 的质数的数量

五【题目示例】

  • 示例 1

    • 输入:n = 10
    • 输出:4
    • 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
  • 示例 2

    • 输入:n = 0
    • 输出:0
  • 示例 3

    • 输入:n = 1
    • 输出:0

六【题目提示】

  • 0 < = n < = 5 ∗ 1 0 6 0 <= n <= 5 * 10^6 0<=n<=5106

七【解题思路】

  • 该题如果使用暴力方法,那么很简单:
    • 遍历每个数字
    • 判断每个数字都否是质数
  • 不过暴力方法的时间复杂度很高,本题的测试用例无法通过
  • 暴力方法超时的原因在于需要逐一判断每个数字,所以我们对其进行优化,即采用埃拉托斯特尼筛法进行计算:
    • 最开始我们假设所有数字都是质数
    • 然后从2开始遍历到 n \sqrt{n} n
    • 如果当前遍历到的数字为质数,那么设置其所有倍数都是质数
    • 最后返回质数的数量即可
  • 具体细节可以参考下面的代码

八【时空频度】

  • 时间复杂度: O ( n l o g l o g n ) O(n log log n) O(nloglogn),其中 n n n为传入参数的值
  • 空间复杂度: O ( n ) O(n) O(n),其中 n n n为传入参数的值

九【代码实现】

  1. Java语言版
class Solution {public int countPrimes(int n) {// 初始化时假设所有数字都是质数boolean[] isPrime = new boolean[n];// 使用埃拉托斯特尼筛法进行计算for (int i = 2; i < Math.sqrt(n); i++) {// 如果当前数字为质数,那么其所有倍数都是质数(注意范围不要超过给定值)if (isPrime[i] == false) {for (int j = i * i; j < n; j += i) {isPrime[j] = true;}}}// 最后筛选剩下的就是所有质数,计算其数量即可int count = 0;for (int i = 2; i < n; i++) {if (isPrime[i] == false) {count++;}}return count;}
}
  1. Python语言版
class Solution:def countPrimes(self, n: int) -> int:# 初始化时假设所有数字都是质数is_prime = [True] * n# 使用埃拉托斯特尼筛法进行计算for i in range(2, int(n ** 0.5) + 1):# 如果当前数字为质数,那么其所有倍数都是质数(注意范围不要超过给定值)if is_prime[i]:for j in range(i * i, n, i):is_prime[j] = False# 最后筛选剩下的就是所有质数,计算其数量即可return sum(is_prime[2:])  
  1. C语言版
int countPrimes(int n)
{// 初始化时假设所有数字都是质数int* isPrime = (int*)calloc(n, sizeof(int));// 使用埃拉托斯特尼筛法进行计算for (int i = 2; i < sqrt(n); i++){// 如果当前数字为质数,那么其所有倍数都是质数(注意范围不要超过给定值)if (isPrime[i] == 0){for (int j = i * i; j < n; j += i){isPrime[j] = 1;}}}// 最后筛选剩下的就是所有质数,计算其数量即可int count = 0;for (int i = 2; i < n; i++){if (isPrime[i] == 0){count++;}}free(isPrime);return count;
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C语言版
    在这里插入图片描述

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

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

相关文章

【数据事务】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法

ID3&#xff08;Iterative Dichotomiser 3&#xff09;是决策树的一种构造算法&#xff0c;由 Ross Quinlan 在 1986 年提出。它主要用于分类问题&#xff0c;通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征&#xff0c;且不支持连续型数据。 1. 核心思想 划分标…

JAVA |日常开发中读写XML详解

JAVA &#xff5c;日常开发中读写XML详解 前言一、XML 简介二、在 Java 中读取 XML2.1 使用 DOM&#xff08;Document Object Model&#xff09;方式读取 XML2.2 使用 SAX&#xff08;Simple API for XML&#xff09;方式读取 XML 三、在 Java 中写入 XML3.1 使用 DOM 方式写入…

ISAAC SIM踩坑记录--Omniverse Launcher添加代理

最近Omniverse Launcher不知道又抽什么疯&#xff0c;在Exchange界面安装各种软件都不成功&#xff0c;报错如下&#xff1a; FetchError: request to https://launcher-index-prod.s3.amazonaws.com/en/components.json failed, reason: Client network socket disconnected…

ECharts柱状图-交错正负轴标签,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

07《缓存》计算机组成与体系结构 系列课

目录 深入了解缓存内存 缓存的重要性 游戏中的存储需求与主内存 虚拟内存和按需分页 现代系统中的多级缓存 缓存级别的大小与速度 缓存相关的术语 缓存命中与未命中 页面命中与缺页 局部性原理 结语 深入了解缓存内存 大家好&#xff0c;欢迎来到今天的课程。上节课…

FPGA实战篇(触摸按键控制LED灯)

1.触摸按键简介 触摸按键主要可分为四大类&#xff1a;电阻式、电容式、红外感应式以及表面声波式。根据其属性的不同&#xff0c;每种触摸按键都有其合适的使用领域。 电阻式触摸按键由多块导电薄膜按照按键的位置印制而成&#xff0c;但由于耐用性较差且维护复杂&#xff0c…

java基础概念47-ArrayList、LinkList和迭代器

一、ArrayList集合 1-1、ArrayList的两种添加信息的方式 1-2、ArrayList集合底层逻辑 1、利用空参创建的集合&#xff0c;在底层创建一个默认长度为0的数组 2、添加第一个元素时&#xff0c;底层会创建一个新的长度为10的数组 3、存满时&#xff0c;会扩容1.5倍。 4、如果…

C++学习日记---第16天

笔记复习 1.C对象模型 在C中&#xff0c;类内的成员变量和成员函数分开存储 我们知道&#xff0c;C中的成员变量和成员函数均可分为两种&#xff0c;一种是普通的&#xff0c;一种是静态的&#xff0c;对于静态成员变量和静态成员函数&#xff0c;我们知道他们不属于类的对象…

Java基础之网络编程:开启网络通信的神秘之门

一、网络编程概述 网络编程是通过计算机网络进行数据传输和通信的编程技术&#xff0c;在 Java 中&#xff0c;我们可以使用丰富的网络编程功能和 API 来实现不同计算机之间的数据交互。 Java 网络编程是指在 Java 语言中使用网络协议和 API 进行网络通信的编程技术。Java 网络…

Go 语言函数编程指南:定义、调用技巧与返回值机制

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Go语言探索之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Go语言简介 2、Go语言的特点 二、函数定义 1、Go语言函数定义 2、函…

在办公室环境中用HMD替代传统显示器的优势

VR头戴式显示器&#xff08;HMD&#xff09;是进入虚拟现实环境的一把钥匙&#xff0c;拥有HMD的您将能够在虚拟现实世界中尽情探索未知领域&#xff0c;正如如今的互联网一样&#xff0c;虚拟现实环境能够为您提供现实中无法实现的或不可能实现的事。随着技术的不断进步&#…

Springboot项目中子模块maven层级不一致的问题

&#xff08;一&#xff09;问题描述 campus-common、campus-pojo、campus-server都是campus-flower-system的子模块&#xff0c;但是只有campus-common在campus-flower-system下 &#xff08;二&#xff09;解决方法 打开父工程&#xff08;我这里是campus-flower-system&…

SpringBoot 架构下的在线家具商城:规划与实践之路

第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&#xff0c;以及各种计算机硬件的完善和升…

【阅读笔记】Android广播的处理流程

关于Android的解析&#xff0c;有很多优质内容&#xff0c;看了后记录一下阅读笔记&#xff0c;也是一种有意义的事情&#xff0c; 今天就看看“那个写代码的”这位大佬关于广播的梳理&#xff0c; https://blog.csdn.net/a572423926/category_11509429.html https://blog.c…

【C++boost::asio网络编程】有关异步读写api的笔记

异步读写api 异步写操作async_write_someasync_send 异步读操作async_read_someasync_receive 定义一个Session类&#xff0c;主要是为了服务端专门为客户端服务创建的管理类 class Session { public:Session(std::shared_ptr<asio::ip::tcp::socket> socket);void Conn…

Proteus8.17下载安装教程

Proteus是一款嵌入式系统仿真开发软件&#xff0c;实现了从原理图设计、单片机编程、系统仿真到PCB设计&#xff0c;真正实现了从概念到产品的完整设计&#xff0c;其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等&#xff0c;能够帮助用…

frp 内网穿透

文章目录 前言使用自己的服务器搭建frp 这里服务器是linux centos 7 宝塔&#xff0c;client是 windows10 https://github.com/fatedier/frp/releases/tag/v0.53.2 版本下载分客户端与服务端 一、frp是什么&#xff1f;二、使用步骤1.部署服务器端2.客户端 前言 使用自己的服务…

大数据-239 离线数仓 - 广告业务 测试 FlumeAgent 加载ODS、DWD层

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

基于 SpringBoot 开发在线家具商城:设计架构与实践流程

第3章 系统分析 用户的需求以及与本系统相似的在市场上存在的其它系统可以作为系统分析中参考的资料&#xff0c;分析人员可以根据这些信息确定出本系统具备的功能&#xff0c;分析出本系统具备的性能等内容。 3.1可行性分析 尽管系统是根据用户的要求进行制作&#xff0c;但是…