质因数(素因数或质因子):在数论里是指能整除给定正整数的质数。

互质:除了1以外,两个没有其他共同质因子的正整数称为互质。

因为1没有质因子,1与任何正整数(包括1本身)都是互质。

正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式 。只有一个质因子的正整数为质数。
每个合数都可以写成几个质数(也可称为素数)相乘的形式 ,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数;而这个因数一定是一个质数。

分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示                        出来,叫做分解质因数。如30=2×3×5 。、

分解质因数只针对合数。

分解质因数的方法有两种:

1、相乘法

写成几个质数相乘的形式(这些不重复的质数即为质因数),实际运算时可采用逐步分解的方式。

如:36=2*2*3*3 运算时可逐步分解写成36=4*9=2*2*3*3或3*12=3*2*2*3

2、短除法

从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫短除法。

短除法求最大约数,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然
后把所有的除数连乘起来,所得的积就是这几个数的最大公约数。例如,求24、48、60的最大公约数24、48、60=2×3×2=12
短除法求最小公倍数,先用这几个数的公约数去除每一个数,再用部分数的公约数去除,并把不能整除的数移下来,一直除        到所有的商中每两个数都是互质的为止,然后把所有的除数和商连乘起来,所得的积就是这几个数的最小公倍数,例如,求    12、   5、18的最小公倍数。(12、15、18)=3×2×2×5×3=180

求最大公约数和最小公倍数:

短除法:

短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两个数互质)。

而在用短除计算公倍数数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。

求最大公约数便乘一边,求最小公倍数便乘一圈。

(公约数:亦称“公因数”。是几个整数同时均能整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。)

分解质因数法:

把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是
这几个数的最大公约数。例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,
所以,(24、60)=12。
把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。例如:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。

Pollard Rho因数分解

1975年,John M. Pollard提出了第二种因数分解的方法,Pollard Rho快速因数分解。该算法时间复杂度为

 。

将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

#include<set>
#include<map>
#include<cmath>
#include<vector>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{int n;printf("请输入一个数字n=");scanf("%d",&n);printf("分解质因数:");for(int i=2;i<=n;i++){while(n!=i)//如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。{if(n>i&&n%i==0)//如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n,重复执行第一步。{printf("%d*",i);n=n/i;}else//如果n不能被k整除,则用k+1作为k的值,重复执行第一步。break;}}printf("%d",n);return 0;
}
#include<set>
#include<map>
#include<cmath>
#include<vector>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
int main()
{int n;printf("请输入一个数字n=");scanf("%d",&n);printf("分解质因数:");for(int i=2;i<=sqrt(n);i++){if(n%i==0){n/=i;printf("%d*",i);i--;}}printf("%d",n);return 0;
}

博客里面的一些定义等东西来自于百度词条。

关于质因数,分解质因数相关推荐

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

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

  2. F - 阿汤的疑惑(模拟取余+分解质因数)

    none 题目描述 阿汤同学最近刚学数论,他发现数论实在是太有趣了,于是他想让你也感受一下数论的乐趣.现在他给你一个正整数 N 和一个正整数 M,要求你用 N 对 M 进行取余操作,即 N % M,记 ...

  3. C++判断是否为素数、求一个数的因数、质因数分解

    判断一个数是否为素数 #include<iostream> #include<vector> #include<math.h> #include<algori ...

  4. 两个质数互质是_两个质数一定是互质数_互质数和质数的区别_分解质因数的方法_互为质数和互质数...

    宜城教育资源网www.ychedu.com两个质数一定是互质数_互质数和质数的区别_分解质因数的方法_互为质数和互质数质数,互质数,分解质因数,合数一个数只有1和它本身两个约数,这样的数叫做质数.一个 ...

  5. 使用线性筛进行质因数分解

    质因数分解 质因数分解的概念 一个数A=p1k1⋅p2k2⋅⋅⋅pnkn,其中pi为质数恒成立一个数A=p_1^{k_1} \cdot p_2^{k_2} \cdot \cdot \cdot p_n^ ...

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

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

  7. 每日经典算法题(四) 分解质因数

    每日经典算法题(四) 分解质因数 分解质因数:Decomposition Quality Factor 题目 将一个正整数分解质因数.例如:输入 90,打印出:90 = 2 * 3 * 3 * 5 程 ...

  8. 素数、最大公约数、最下公倍数、质因数分解

    2013-08-18 11:20:43 素数.最大公约数.最下公倍数.质因数分解都是与素数相关的,解决了素数的问题,其他的都可以此为基础求解. 小结: 求1到n之间的素数的基本方法是通过遍历2到sqr ...

  9. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!

    题目描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入两个整数a,b. 输出 每行输出一个数的分解,形如k=a1*a2*a3...(a1< =a2< =a3...,k也是从小到大 ...

  10. C语言,分解质因数一个解法!_只愿与一人十指紧扣_新浪博客

    题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...

最新文章

  1. project 模板_18个施工进度计划横道图模板,自动出图超方便,全部在这儿给你准好了...
  2. Python2和Python3中raise Exception
  3. 不同的寻址方式的应用——将每行的单词都变成大写
  4. 苹果 App Store 申请和管理相关知识
  5. OpenGL text rendering文字渲染的实例
  6. canvas画布 带箭头的虚线_娇小女生只能走可爱风?No!带你解锁别样的高级穿搭法则...
  7. 诈骗者如何伪造电子邮件地址,以及如何分辨
  8. 导致View树遍历的时机
  9. 计算机网络65535,计算机网络1
  10. Temp文件夹缺少network service权限,webservice能访问,但是不能调用
  11. centos 7.3 设置静态IP
  12. Python检查字符串是否包含另一个字符串
  13. 拓端tecdat|卡尔曼滤波器:用R语言中的KFAS建模时间序列
  14. OpenCV探索之路(十六):图像矫正技术深入探讨
  15. Typecho 源码分析(8)-- 后台插件列表
  16. Oj-NOI 1.8 20:反反复复
  17. 网络问答口碑营销的作用和价值分析
  18. C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录
  19. Apicloud中在frame中加载数据未完成时显示加载进度条
  20. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看) 1

热门文章

  1. erp选型时怎样来确认体系的成熟度?
  2. trunk口不通防火墙_交换机S5700与防火墙USG5500无法对接Eth-trunk LACP-static模式
  3. R入门(九)--- 地图
  4. android studio生命周期代码,Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期...
  5. 百度提交Sitemap提示“索引型不予处理”的解决办法
  6. maxthon 2 ua
  7. 我失恋了,请编个笑话激励我
  8. Python基础之Scrapy进阶
  9. [黑金原创教程][连载]关于《iBoard 电子学堂》的学习及进阶方式
  10. Date日期格式修改