首页 > Python资料 博客日记
「数学::质数」试除法 / Luogu P5736(C++)
2024-10-12 21:00:15Python资料围观53次
文章「数学::质数」试除法 / Luogu P5736(C++)分享给大家,欢迎收藏Python资料网,专注分享技术知识
概述
在质数的第一节我们来讲解试除法。
质数是指在大于1的自然数中只能被1和它自己整除的数。
我们可以利用这一除法性质对质数进行判定。
Luogu P5736:
输入 n 个不大于 10^5 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。
思路
如果一个数不是质数,即合数,那么它一定可以被除1和它自己以外的数整除。
如果有合数a,那么必有a%b==0。其中b!=a&&b!=1。
因此对于一个数x,因此我们可以从2开始枚举自然数到x-1,判断其中是否有可以整除x的数,如果有,则x不是质数。
但是对于单个数n进行判断,这样做的时间复杂度就已经是O(n)级别的了,该怎么优化呢?
注意到:如果a是合数,b是a的一个因数,则c=a/b也是a的一个因数。
因此对于一对数(b,a/b),只需要检验其中较小的那个是否是a的因数即可,即min(b,a/b)。
当b=c时,√a=b=c,即较小的因数最大为√a,所以我们只需要枚举[2,√a]就能断定a是否为质数。
综上:
如果x是一个合数,那么枚举[2,√x]就能检验出其为合数。
如果x是一个质数,那么枚举[2,√x]时就没有任何一个数整除它,那么[√x,x)必然不能整除它,不必检验。(因数是成对出现的,小的分布在[2,√x],大的分布在[√x,x),小的不存在则大的一定不存在)
算法过程
我们来实现质数判断函数。
很直观的代码:
bool is_prime(int& num){
if(num<2)return false;
for(int i=2;i*i<=num;i++)
if(!(num%i))return false;
return true;
}
小于2的数不是质数。
对于大于2的数,枚举从2开始的自然数,他们在[2,√x]之间,num一旦被整除就返回false,否则返回true。
复杂度
时间复杂度: O(√n)
空间复杂度: O(1)
Code
#include <iostream>
using namespace std;
bool is_prime(int& num){
if(num<2)return false;
for(int i=2;i*i<=num;i++)
if(!(num%i))return false;
return true;
}
int main(){
int n;cin>>n;
int num,cnt=0,ans[n]={0,};
while(n--){
cin>>num;
if(is_prime(num))ans[cnt++]=num;
}
for(int i=0;i<cnt;i++)cout<<ans[i]<<' ';
return 0;
}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程