文章目录

  • 什么是质数、合数
  • 判断质数
  • 分解质因数

什么是质数、合数

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,质数也叫素数。

与质数相对的是合数,合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数整除的数。

判断质数

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

循环中不建议写成i<=sqrt(n),因为sqrt函数很慢,每次for循环都会执行一遍,耗时。
也不要写成i*i<=n,会存在溢出风险。

时间复杂度:O(sqrt(n))

分解质因数

把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数
如:12=2 * 2 * 3

void divide(int n)
{for(int i=2; i<=n/i; i++)if(n%i == 0){int s=0;while(n%i == 0){n/=i;s++;     }cout<<i<<" "<<s; //s是i的次方数}if(n>1) cout<<n<<" "<<1; //此时n是大于根号n的那个质因子
}

时间复杂度:O(sqrt(n)) (最坏情况下)

为什么这里也只用循环到n/i就行了呢?
因为,n的质因子最多只有一个大于sqrt(n)的(很好证明,因为如果有两个的话相乘就大于n了,这是矛盾了),所以,我们只需要先找到小于sqrt(n)的质因子,循环结束后,n若是大于1的,说明此时这个n就是那个大于sqrt(n)的质因子。

我们可能会疑问,我们要找的是n的所有的质因子,可是你在循环内枚举时 i 是从2 ~ n/i的,这中间i可是包含的有合数的,会不会有问题呢?
其实,是没有问题的,因为当我们枚举到 i 时,就意味着我们已经把 n 的2~i-1的所有质因子都除干净了(n/=i),也就是说我们此时的n中不含有2 ~ i -1的任何质因子了,如果满足if(n%i == 0),那么说明 i 中也一定不含2 ~ i -1的任何质因子,那么这个 i 一定是个质数。

判断质数、分解质因数相关推荐

  1. 判断质数和用算数基本定理分解质因数

    文章目录 摘要 质数 判断一个数是否是质数 分解质因数 超级详细的基础算法和数据结构合集: https://blog.csdn.net/GD_ONE/article/details/104061907 ...

  2. 将一个输入的正整数n分解质因数

    题目三: 将一个输入的正整数n分解质因数 1.核心代码 1.1 普通正整数(非质数)分解质因数 for (int i = 2; i <=n; i++) {flag01=true; for (in ...

  3. 分解质因数和判断两数是否互为质数--java

    题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 如果这个质数恰等于n,则说明分解质因数的过程已 ...

  4. Python判断质数合数,质因数分解并得到所有因数

    Python判断质数合数,质因数分解并得到所有因数 判断质数.合数 质因数分解 得到所有正因数 完整程序 运行效果 判断质数.合数 要判断一个大于一的正整数是质数还是合数,只需判断在区间[2, √x] ...

  5. 【数学专题】 筛质数、分解质因数和快速幂

    筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...

  6. 算法刷题-数论-质数的判定、分解质因数、筛质数

    文章目录 数论 1. 质数 质数的判定---试除法 分解质因数---试除法 筛质数 朴素筛法 埃氏筛法 线性筛法 数论 1. 质数 质数:在大于1的整数中,如果只包含1和它本身这两个约数,那么这个数就 ...

  7. php整形数组求里面的质数,PHP实现的分解质因数操作示例

    本文实例讲述了PHP实现的分解质因数操作.分享给大家供大家参考,具体如下: 思路: 如果要计算$num的质数,则至少收集$num以内的质数数组,判断$num是否在质数数组里: 如果否,则判断当前质数$ ...

  8. 【C素数】素数(质数)和分解质因数

    种一棵树最好的时间是十年前,其次是现在 文章目录 判断一个数是否是素数 1-1.基本概念: 1-2.题目描述: 1-3.题解思路: 1-4代码实现 1-4-1方法一:直接flag标记法: 1-4-2方 ...

  9. 判断质素和分解质因数

    1.判断一个数是否是质素 对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数. /*** 判断一个数是否是质素* @param n 判断的数* @return*/public st ...

  10. 质数||素数(分解质因数、筛素数、质数定理)

    质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数. 规定1既不是质数也不是合数 分解质因数:把一个合数分解成若干个因数乘积的形式 分解质因数(也称分解 ...

最新文章

  1. SQLServer之DEFAULT约束
  2. 使用try_catch_finally处理流中的异常
  3. shell看java控制台_java - 为什么我的shell脚本的输出不能打印在控制台? - SO中文参考 - www.soinside.com...
  4. 文件服务器(虚拟目录)配置步骤
  5. JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
  6. 20190826:(leetcode习题)反转链表
  7. jsp后台页面登录html代码,炫酷的登录jsp页面完整代码
  8. 驻马店计算机招聘信息网,2017河南职称计算机考试报名:驻马店职称计算机报名入口...
  9. WiFi万能钥匙+小米手机拿到coffee店WiFi密码
  10. 本地字体上传到网络后运用到微信小程序详细过程
  11. android动态mac地址,Android 版本兼容 — Android 6.0 和 7.0后获取Mac地址
  12. java spel_Java spring SPEL表达式注入
  13. 伯通过计算机网络,用于互联的计算机网络的安全系统
  14. python Re模块学习
  15. 爬取知乎神回复 | 上次笑死人,这次继续笑~
  16. 【芯片驱动】1. 详细解析CMT2300A
  17. 五大派玩家角逐移动资讯市场,微博如何成“另类”?
  18. js如何点击父级元素关闭,点击子级不受影响
  19. 非局域网如何使用ssh远程访问Linux主机
  20. BMW BENZ AUDI 宝马,奔驰,奥迪维修标准工时,从KSD,WIS, ELSA 中提取。

热门文章

  1. leetcode499 迷宫III
  2. 心情随笔(一):五月随笔满满的正能量
  3. Python:正则表达式 flags 参数
  4. Unity 反转法线,在 Hierarchy 视图对象的快捷菜单中增加 Flip Mesh Normals(反转网格法线)项...
  5. 人月神话(二)——为什么巴比伦塔会失败
  6. 桌面图标变白,任务栏图标变白
  7. 通过transform,纯css写出3d环绕效果
  8. 广告是如何找到你的?
  9. 基于R语言的Kaggle案例分析学习笔记(七)
  10. 奇点云数据中台技术汇(一) | DataSimba——企业级一站式大数据智能服务平台