洛谷-P3912素数个数题解

article/2025/7/13 11:37:59

P3912 素数个数

题目描述

1 , 2 , ⋯ , N 1,2,\cdots,N 1,2,,N 中素数的个数。

输入格式

一行一个整数 N N N

输出格式

一行一个整数,表示素数的个数。

输入输出样例 #1

输入 #1

10

输出 #1

4

说明/提示

对于 40 % 40\% 40% 的数据, 1 ≤ N ≤ 10 6 1 \le N \le 10^6 1N106

对于 80 % 80\% 80% 的数据, 1 ≤ N ≤ 10 7 1 \le N \le 10^7 1N107

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 10 8 1 \le N \le 10^8 1N108

看题目,如果我们没有学过埃氏筛法的话,你一定会这样写:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int N, ans;
bool prime(int t){if(t < 1) return false;for(int i = 2; i < t; i ++){if(t % i == 0) return false;}return true;
}
signed main(){cin >> N;for(int i = 2; i <= N; i ++){if(prime(i)) ans ++;}cout << ans;return 0;
}

对吧,从 1 1 1 一直搞到 N N N,看看哪些是素数,然后就让累加器统计一下,但是呢:在这里插入图片描述
惨不忍睹啊,只拿了20分;

让我们重新看题目,他既然是统计 1 1 1 N N N 之间的素数个数的话,必须要使用埃氏筛法(没学过的点这里)

好,重新编写代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e8 + 7;
int n, a[N], ans;
void solve(){//听说可以减时间复杂度 cin >> n;a[1] = 1;//1不是质数,标记1 for(int i = 2; i * i <= n; i ++){//开方减复杂度 if(a[i] == 0){//是质数 for(int j = i * 2; j <= n; j += i){//倍数都不是质数 a[j] = 1;//标记 }}}for(int i = 1; i <= n; i ++){if(a[i] == 0) ans ++;//统计 }cout << ans;
}
signed main(){solve();return 0;
}

结果:
在这里插入图片描述
我真是可悲~~~~(>_<)~~~~
无语了。

发现了:long long数组不可以开 10 8 10^8 108 这么大,可以改成bool类型:
在这里插入图片描述
真是太难了,修改了 2 2 2 遍才改好:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e8 + 7;
int n, ans;
bool a[N];
void solve(){//听说可以减时间复杂度 cin >> n;a[1] = 1;//1不是质数,标记1 for(int i = 2; i * i <= n; i ++){//开方减复杂度 if(a[i] == 0){//是质数 for(int j = i * 2; j <= n; j += i){//倍数都不是质数 a[j] = 1;//标记 }}}for(int i = 1; i <= n; i ++){if(a[i] == 0) ans ++;//统计 }cout << ans;
}
signed main(){solve();return 0;
}

结语:点个关注再走喵~

数论真是太难了,以后再也不做了(bush

http://www.hkcw.cn/article/SbWwpwAQBW.shtml

相关文章

【环境搭建】Java、Python、Nodejs等开发环境搭建

1. 前言 趁着 618 活动&#xff0c;我新换了一台电脑。开发的同学都知道&#xff0c;重新在新电脑搭建开发环境是一件相对繁琐的事&#xff0c;这篇文章我将介绍如何搭建Java&#xff08;jdk、maven等&#xff09;、Python&#xff08;uv、conda等&#xff09;、Nodejs、Docke…

【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)

机器学习入门核心算法&#xff1a;层次聚类算法&#xff08;AGNES算法和 DIANA算法&#xff09; 一、算法逻辑二、算法原理与数学推导1. 距离度量2. 簇间距离计算&#xff08;连接标准&#xff09;3. 算法伪代码&#xff08;凝聚式&#xff09; 三、模型评估1. 内部评估指标2. …

设计模式——迭代器设计模式(行为型)

摘要 本文详细介绍了迭代器设计模式&#xff0c;这是一种行为型设计模式&#xff0c;用于顺序访问集合对象中的元素&#xff0c;同时隐藏集合的内部结构。文章首先定义了迭代器设计模式并阐述了其核心角色&#xff0c;包括迭代器接口、具体迭代器、容器接口和具体容器。接着&a…

【文献阅读】Learning Transferable Visual Models From Natural Language Supervision

摘要 最先进的计算机视觉系统经过训练&#xff0c;可预测一组固定的预先确定的对象类别。这种受限的监督形式限制了它们的通用性和可用性&#xff0c;因为指定任何其他视觉概念都需要额外的标记数据。 直接从关于图像的原始文本中学习是一种很有前途的替代方法&#xff0c;它…

字符函数和字符串函数

目录 1.字符分类函数 2.字符转换函数 3.strlen函数的使用和模拟实现 4.strcpy函数的使用和模拟实现 5.strcat函数的使用和模拟实现 6.strcmp函数的使用和模拟实现 7.strcnpy函数的使用和模拟实现 8.strcnat函数的使用和模拟实现 9.strncmp函数的使用 10.strstr的函数使…

苹果电脑深度清理,让老旧Mac重焕新生

在日常使用苹果电脑的过程中&#xff0c;随着时间推移&#xff0c;系统内会积累大量冗余数据&#xff0c;导致电脑运行速度变慢、磁盘空间紧张。想要让设备恢复流畅&#xff0c;苹果电脑深度清理必不可少。那么&#xff0c;如何进行苹果电脑深度清理呢&#xff1f;接下来为你详…

android binder(1)基本原理

一、IPC 进程间通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;机制&#xff0c;用于解决不同进程间的数据交互问题。 不同进程之间用户地址空间的变量和函数是不能相互访问的&#xff0c;但是不同进程的内核地址空间是相同和共享的&#xff0c;我们可…

2025年ESWA SCI1区TOP,改进成吉思汗鲨鱼算法MGKSO+肝癌疾病预测,深度解析+性能实测

1.摘要 本文针对肝癌&#xff08;HCC&#xff09;早期诊断难题&#xff0c;提出了一种基于改进成吉思汗鲨鱼优化算法&#xff08;MGKSO&#xff09;的计算机辅助诊断系统。由于HCC在早期症状不明显且涉及高维复杂数据&#xff0c;传统机器学习方法易受噪声和冗余特征干扰。为提…

性能测试实例(http和ldap协议压测)

一、某授权服务器生成授权码效率验证&#xff08;http协议&#xff09; 测试背景 在存量数据23万条的情况下&#xff0c;生成一条授权数据&#xff0c;需要10秒左右&#xff0c;用户反应数据生成效率太差&#xff0c;需要优化。初步判断是由于在授权数据生成时&#xff0c;有查…

解锁设计师创意魔法:Onlook赋能你的Web创作

在数字时代的今天&#xff0c;设计和开发的界限正在逐步模糊。无论是经验丰富的程序员&#xff0c;还是初出茅庐的设计师&#xff0c;能在统一的环境中高效实现创意是任何设计工具的理想。而Onlook&#xff0c;不仅是一个开源的视觉编码编辑器&#xff0c;更是一座连接设计与开…

智慧零工平台前端开发实战:从uni-app到跨平台应用

智慧零工平台前端开发实战:从uni-app到跨平台应用 本文将详细介绍我如何使用uni-app框架开发一个支持微信小程序和H5的零工平台前端应用,包含技术选型、架构设计、核心功能实现及部署经验。 前言 在当今移动互联网时代,跨平台开发已成为提高开发效率的重要手段。本次我选择…

用go从零构建写一个RPC(4)--gonet网络框架重构+聚集发包

在追求高性能的分布式系统中&#xff0c;RPC 框架的底层网络能力和数据传输效率起着决定性作用。经过几轮迭代优化&#xff0c;我完成了第四版本的 RPC 框架。相比以往版本&#xff0c;这一版本的最大亮点在于 重写了底层网络框架 和 实现了发送端的数据聚集机制&#xff0c;这…

云服务器突发宕机或无响应怎么办

当云服务器突发宕机或无响应时&#xff0c;需快速定位问题并恢复服务。以下是分步骤的解决方案&#xff1a; 1. 初步确认问题 检查网络连接 本地网络是否正常&#xff1f;尝试 ping 其他网站 排除本地问题。 使用 ping <服务器IP> 或 traceroute <IP> 测试网络连通…

掌握HttpClient技术:从基础到实战(Apache)

目录 前言 一、Apache HttpClient简介 二、HttpClient基础使用 1. 添加依赖 2. 创建HttpClient实例 3. 发送GET请求 4. 发送POST请求 三、HttpClient高级配置与实战案例 1. 连接池优化 2. 超时与重试配置 3. 文件上传&#xff08;Multipart&#xff09; 总结 前言 …

EXCEL--累加,获取大于某个值的第一个数

一、函数 LET(data,A1:A5,cumSum,SCAN(0,data,LAMBDA(a,b,ab)),idx,MATCH(TRUE,cumSum>C1,0),INDEX(data,idx)) 二、函数拆解 1、LET函数&#xff1a;LET(name1, value1, [name2, value2, ...], calculation) name1, name2...&#xff1a;自定义的变量名&#xff08;需以字…

D. Gellyfish and Camellia Japonica【Codeforces Round 1028 (Div. 2)】

D. Gellyfish and Camellia Japonica 思路 贪心构造&#xff08;其实是思维题&#xff09; 先找必要性&#xff0c;再验证充分性&#xff1a; 倒着求出每个位置的下界作为这个位置的值&#xff0c;再正着验证构造出的这个数列是否合法。 代码非常短&#xff0c;这个题如果当时…

GODOT引擎学习日志

最近在学习使用GODOT引擎&#xff0c;发现这个东西很好很强大。此为背景。 刚开始学习&#xff0c;在使用camera3D的时候&#xff0c;发现使用鼠标滚轮进行视角缩放的时候&#xff0c;网上有些内容不全&#xff0c;于是找了一下。其实很简单&#xff1a; Camera3D有个属性是siz…

普通二叉树 —— 最近公共祖先问题解析(Leetcode 236)

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 普通二叉树 —— 最近公共祖先问题解析&#xff08;Leetcode 236&#xff09;&#x1f9e0; 问题理解普通二叉树与 BST 的区别&#xff1a; &#x1f4a1; 解题思路关键思想&#xff1a;&#x1f4cc; 举个例子&#xff1a…

Dify 部署问题处理

Dify介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员&#xff0c;也能参与到 AI 应用的定义和数据运营过程…

《操作系统真相还原》——中断

可以毫不夸张的说&#xff0c;操作系统离不开中断 此时我们将中断处理程序放在了汇编文件中了&#xff0c;很显然我们不能很方便的编写中断处理程序&#xff0c;不如在汇编程序里调用c函数。 在这个感觉过可以在c语言中直接内联汇编完成这些。 定时器 将时钟中断的频率提高后…