半素数的判定
::iterator it; while(cin>>n) { it=s.find(n); if(it!=s.end()) cout<<"Yes"<
发布日期:2021-06-29 05:01:03
浏览次数:2
分类:技术文章
本文共 967 字,大约阅读时间需要 3 分钟。
一、半素数定义
数学中,两个的乘积所得的自然数我们称之为半(也叫双,二次殆素数)开始的几个半素数是4, 6, 9, 10, 14, 15, 21, 22, 25, 26, ... 它们包含1及自己在内合共有3或4个因子。另外,合数并不一定是半素数,但半素数一定是合数。
二、判断方法(不拆分数,而选择查找数,思路很厉害了。)
题目:输入一个整数N,2<=N<=1000,000,判断N是否为半素数。
思路:1.先求出500000以内的素数(因为最小的素数为2),建立素数表,共41538个
【素数的判定首先排除2以外的所有偶数,然后从奇数中排除素数的倍数,剩下的就是素数】;
2.对输入的每个整数N,从2开始找它的因子i,如果i和N/i都能在素数表中查找到,则N是半素数。
具体实现:STL——vector & set,分别用来存储素数和半素数
采用vector存储素数有利于线性查找,在for循环中,可直接根据下标遍历素数表。
采用set存储半素数,是因为set是平衡检索二叉树,可以将元素自动排序,检索速度最快。
#include#include #include #include using namespace std;vector v;set s;void ChoosePrime(int a,int b)//建立[a,b]范围内的素数表{ for(int i=a;i<=b;i++) { //2是素数,这里清楚2的倍数 if(i!=2&&i%2==0) continue; for(int j=3;j*j<=i;j+=2) { if(i%j==0) goto RL; } v.push_back(i); RL:continue; }}int main(){ ChoosePrime(2,500000);//建立[2,500000]范围内的素数表 int i,j,p; for(i=0;i
转载地址:https://blog.csdn.net/zhao2chen3/article/details/82955997 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月17日 08时09分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python初学者入门学习笔记:字符串的操作(获取输入/格式化)
2019-04-29
python初学者入门学习笔记:数据结构列表
2019-04-29
python初学者入门学习笔记:数据结构集合
2019-04-29
python初学者入门学习笔记:数据结构字典
2019-04-29
python初学者入门学习笔记:循环
2019-04-29
python初学者入门学习笔记:条件/跳出与结束循环
2019-04-29
python初学者入门学习笔记:运算符与随机数
2019-04-29
python初学者入门学习笔记:关键字
2019-04-29
python初学者入门学习笔记:内置函数
2019-04-29
python:Requests+正则爬取网页数据
2019-04-29
Python:模拟 Ajax 请求抓取今日头条街拍美图
2019-04-29
映射ngrok使用,免费开源工具
2019-04-29
Python自学(一)Python安装和环境配置...非喜轻喷
2019-04-29
Java环境变量和安装(自用备忘)
2019-04-29
webpack One CLI for webpack must be installed. These are recommended choices, delivered as separate
2021-07-02
【解决】Cannot find module 'webpack'_npm
2021-07-02
dubbo集成springboot demo for idea
2021-07-02
Windows下RabbitMQ安装,部署,配置(详解)
2021-07-02
完美解决springboot集成jsp问题(详解demo)
2021-07-02