当前位置: 首页 > news >正文

洛谷-P3912素数个数题解

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

相关文章:

  • window/linux ollama部署模型
  • IPtables部署和使用
  • 基于LangChain的AI助手开发:从零到上线
  • Alist Win 基本用法
  • 强化学习-深度学习和强化学习领域
  • 第十二节:第四部分:集合框架:List系列集合:LinkedList集合的底层原理、特有方法、栈、队列
  • 【C语言】C语言经典小游戏:贪吃蛇(上)
  • 【操作系统·windows快捷键指令】
  • 第二十一章 格式化输出
  • 16.FreeRTOS
  • make_unique
  • 启动metastore时报错MetaException(message:Version information not found in metastore
  • NodeJS全栈WEB3面试题——P7工具链 测试
  • 池中锦鲤的自我修养,聊聊蓄水池算法
  • 代码随想录算法训练营第六天| 242.有效的字母异位词 、 349. 两个数组的交集 、 202. 快乐数 、1. 两数之和
  • 2023年12月6级第一套第一篇
  • 英文投资理财源码挖矿源码投资理财系统源码(源码下载)
  • 线程安全与线程池
  • 审计- 1- 审计概述
  • python打卡训练营打卡记录day43
  • 做戒指网站的logo照片/南昌seo排名
  • 比价网站开发毕业论文/网站建设运营
  • 济南润滑油网站制作/网站建设公司好
  • 淘宝网站建设弄什么类目/如何推广平台
  • logo设计在线生成免费标智客/百度seo按天计费
  • 建立网站第一步是建立什么/全案网络推广公司