一 、判某一质数

bool is_prime(int n) {for(int i=2;i<=sqrt(n);++i) {if(n%i==0) return false;}return true;
}

二、分解质因数

#include<stdio.h>
#include<algorithm>
using namespace std;
int n,cnt,p[1001],c[1001];void div() {int x=n;for(int i=2;i*i<=n;++i) {if(x%i==0) {p[++cnt]=i;while(x%i==0) {x/=i;c[cnt]++;}}}if(x>1) p[++cnt]=x,c[cnt]++;
}int main()
{scanf("%d",&n);div();for(int i=1;i<=cnt;++i) printf("%d^%d\n",p[i],c[i]);return 0;
}

三、求正约数集合

·N本身

#include<stdio.h>
#include<algorithm>
using namespace std;
int n,cnt,factor[1001];void Get() {for(int i=2;i*i<=n;++i) {if(n%i==0) {factor[++cnt]=i;if(i*i!=n) factor[++cnt]=n/i; }}
}int main()
{scanf("%d",&n);Get();for(int i=1;i<=cnt;++i) {printf("%d ",factor[i]);}return 0;
}  

·拓展——1~N(倍数法)

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int n;
vector<int> v[1001];void Sol() {for(int i=1;i<=n;++i) {for(int j=1;i*j<=n;++j) {v[i*j].push_back(i);}}
}int main()
{scanf("%d",&n);Sol();for(int i=1;i<=n;++i) {printf("%d: ",i);for(int j=0;j<v[i].size();++j) {printf("%d ",v[i][j]);}printf("\n");}return 0;
}

时间复杂度O(N + N/2 +N/3 ……+N/N) =O(NlogN)

倍数法的推论

  1~N 每个数的约束个数总和大约为 NlogN

转载于:https://www.cnblogs.com/qseer/p/9786845.html

试除法的妙用【O(√N) 复杂度】相关推荐

  1. 求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  2. 求质数算法的 N 种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在 CS ...

  3. (转)求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  4. 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)

    文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...

  5. JavaScript实现trial Division试除法算法(附完整源码)

    JavaScript实现trial Division试除法算法(附完整源码) trialDivision.js完整源代码 trialDivision.js完整源代码 export default fu ...

  6. 素数-试除法和埃式筛选法模板

    试除法: bool is_prime(int n) {if (n <= 1) return false;for (int i = 2;i<=sqrt(n);i++)//这样写更好!if ( ...

  7. 866. 试除法判定质数

    试除法判定质数 #include<iostream> #include<cmath> using namespace std; bool cmp(int x) {if (x== ...

  8. 试除法求最小N个素数之二

    Trial division 试除法求最小N个素数是一个经典的算法. 这个算法不同于前一个版本<试除法求最小N个素数>的方法,也是一个比较快速的方法. 这个算法考虑以下两点: 1.偶数中只 ...

  9. 试除法计算最小的N个素数

    Trial division 试除法求最小N个素数是一个经典的算法. 可以使用素数分类的性质来加快计算的速度. 除了2以外,素数只能是2n+1,n>=1. 除了2.3和5以外,素数只能是6n+1 ...

最新文章

  1. 微软最新启动了一个 I'm 活动
  2. CSS Border属性solid(实线)使用介绍
  3. Linux的IPC机制(二):Socket/管道/消息队伍/信号量
  4. 动态分辨率是什么意思_什么是1080p、2k、4k?视频基础参数解释
  5. 字符串-拆分和拼接字符串
  6. 计算机体系结构 -- 第一章3 -- 设计的定量4个原则
  7. 操作系统复习笔记 04 Process 进程
  8. leetcode 1143. 最长公共子序列(dp)
  9. (六)ElasticSearch 6.1.1聚合查询
  10. 怎么用记事本写java_如何用记事本写下第一个Java程序-Fun言
  11. python怎么输入一个数字并调用_python如何直接输入上一句话,如何快速打出上一句话...
  12. leetcode刷题:2.两数之和
  13. 使用skyeye运行《Linux设备驱动开发详解》的实例(一)
  14. OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)...
  15. Oracle脚本(三)
  16. 炫酷而不复杂,RDP报表实用又方便
  17. 淘宝,京东,苏宁易购技术架构(路线)分析和比较
  18. 实现flv格式网络摄像头实时视频预览(nginx-rtmp,ffmpeg)
  19. MD5加密和SHA256加密
  20. 华东师范计算机模拟考试题答案,《计算机入门》模拟卷C答案-华东师范大学

热门文章

  1. 多线程间通信之AutoResetEvent和ManualResetEvent的原理分析
  2. Sencha touch Panel之间的跳转(如不使用TabPanel或者Carousel控件而产生跳转的动画效果)...
  3. 关于bat中使用rar压缩命令
  4. 图像处理之基于阈值模糊
  5. 《深入Python》-11. HTTP Web 服务
  6. 常用maven插件总结
  7. MySQL性能优化的21条最佳经验【转】
  8. springMVC - 之拦截器
  9. equals()方法详解
  10. 修改表结构添加外键约束,默认外键名