判断质数、分解质因数
文章目录
- 什么是质数、合数
- 判断质数
- 分解质因数
什么是质数、合数
质数是指在大于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 一定是个质数。
判断质数、分解质因数相关推荐
- 判断质数和用算数基本定理分解质因数
文章目录 摘要 质数 判断一个数是否是质数 分解质因数 超级详细的基础算法和数据结构合集: https://blog.csdn.net/GD_ONE/article/details/104061907 ...
- 将一个输入的正整数n分解质因数
题目三: 将一个输入的正整数n分解质因数 1.核心代码 1.1 普通正整数(非质数)分解质因数 for (int i = 2; i <=n; i++) {flag01=true; for (in ...
- 分解质因数和判断两数是否互为质数--java
题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 如果这个质数恰等于n,则说明分解质因数的过程已 ...
- Python判断质数合数,质因数分解并得到所有因数
Python判断质数合数,质因数分解并得到所有因数 判断质数.合数 质因数分解 得到所有正因数 完整程序 运行效果 判断质数.合数 要判断一个大于一的正整数是质数还是合数,只需判断在区间[2, √x] ...
- 【数学专题】 筛质数、分解质因数和快速幂
筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...
- 算法刷题-数论-质数的判定、分解质因数、筛质数
文章目录 数论 1. 质数 质数的判定---试除法 分解质因数---试除法 筛质数 朴素筛法 埃氏筛法 线性筛法 数论 1. 质数 质数:在大于1的整数中,如果只包含1和它本身这两个约数,那么这个数就 ...
- php整形数组求里面的质数,PHP实现的分解质因数操作示例
本文实例讲述了PHP实现的分解质因数操作.分享给大家供大家参考,具体如下: 思路: 如果要计算$num的质数,则至少收集$num以内的质数数组,判断$num是否在质数数组里: 如果否,则判断当前质数$ ...
- 【C素数】素数(质数)和分解质因数
种一棵树最好的时间是十年前,其次是现在 文章目录 判断一个数是否是素数 1-1.基本概念: 1-2.题目描述: 1-3.题解思路: 1-4代码实现 1-4-1方法一:直接flag标记法: 1-4-2方 ...
- 判断质素和分解质因数
1.判断一个数是否是质素 对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数. /*** 判断一个数是否是质素* @param n 判断的数* @return*/public st ...
- 质数||素数(分解质因数、筛素数、质数定理)
质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数. 规定1既不是质数也不是合数 分解质因数:把一个合数分解成若干个因数乘积的形式 分解质因数(也称分解 ...
最新文章
- SQLServer之DEFAULT约束
- 使用try_catch_finally处理流中的异常
- shell看java控制台_java - 为什么我的shell脚本的输出不能打印在控制台? - SO中文参考 - www.soinside.com...
- 文件服务器(虚拟目录)配置步骤
- JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)
- 20190826:(leetcode习题)反转链表
- jsp后台页面登录html代码,炫酷的登录jsp页面完整代码
- 驻马店计算机招聘信息网,2017河南职称计算机考试报名:驻马店职称计算机报名入口...
- WiFi万能钥匙+小米手机拿到coffee店WiFi密码
- 本地字体上传到网络后运用到微信小程序详细过程
- android动态mac地址,Android 版本兼容 — Android 6.0 和 7.0后获取Mac地址
- java spel_Java spring SPEL表达式注入
- 伯通过计算机网络,用于互联的计算机网络的安全系统
- python Re模块学习
- 爬取知乎神回复 | 上次笑死人,这次继续笑~
- 【芯片驱动】1. 详细解析CMT2300A
- 五大派玩家角逐移动资讯市场,微博如何成“另类”?
- js如何点击父级元素关闭,点击子级不受影响
- 非局域网如何使用ssh远程访问Linux主机
- BMW BENZ AUDI 宝马,奔驰,奥迪维修标准工时,从KSD,WIS, ELSA 中提取。
热门文章
- leetcode499 迷宫III
- 心情随笔(一):五月随笔满满的正能量
- Python:正则表达式 flags 参数
- Unity 反转法线,在 Hierarchy 视图对象的快捷菜单中增加 Flip Mesh Normals(反转网格法线)项...
- 人月神话(二)——为什么巴比伦塔会失败
- 桌面图标变白,任务栏图标变白
- 通过transform,纯css写出3d环绕效果
- 广告是如何找到你的?
- 基于R语言的Kaggle案例分析学习笔记(七)
- 奇点云数据中台技术汇(一) | DataSimba——企业级一站式大数据智能服务平台