把76%分解成把24分解质因数是

质因数分解及算法实现
质因数分解及算法实现
, 围观3596次
每个都可以写成几个相乘的形式,这几个质数就都叫做这个合数的质。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。而这个因数一定是一个质数。
质因数(或质因子)在里是指能整除给定正的。两个没有共同质因子的正整数称为。因为1没有质因子,与任何正整数(包括1本身)都是互质。正整数的可将正整数表示为一连串的质因子相乘,质因子如重复可以表示。根据,任何正整数皆有独一无二的质因子分解式。只有一个质因子的正整数为质数。
1没有质因子。
5只有1个质因子,5本身。(5是质数。)
6的质因子是2和3。(6 = 2 × 3)
2、4、8、16等只有1个质因子:2(2是质数,4 = 2,8 = 2,如此类推。)
10有2个质因子:2和5。(10 = 2 × 5)
就是一个数的,并且是,比如8=2×2×2,2就是8的质因数。12=2×2×3,2和3就是12的质因数。把一个式子以12=2×2×3的形式表示,叫做。16=2×2×2×2,2就是16的质因数,把一个写成几个质数相乘的形式表示,这也是质因数。[1]
分解质因数的方法是先用一个合数的最小质因数去除这个合数,得出的数若是一个质数,就写成这个合数相乘形式;若是一个合数就继续按原来的方法,直至最后是一个质数 。
分解质因数的有两种表示方法,除了大家最常用知道的“短除分解法”之外,还有一种方法就是“塔形分解法”。
分解质因数对解决一些和的问题有很大的帮助,同时又为求和做了重要的铺垫。
求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫,和除法的性质差不多,还可以用来求多个个数的:
求的一种方法,也可用来求。
求几个数最大的方法,开始时用观察比较的方法,即:先把每个数的因数找出来,然后再找出公因数,最后在公因数中找出最大公因数。
例如:求12与18的最大公因数。
12的因数有:1、2、3、4、6、12。
18的因数有:1、2、3、6、9、18。
12与18的有:1、2、3、6。
12与18的最大公因数是6。
这种方法对求两个以上数的最大公因数,特别是数目较大的数,显然是不方便的。于是又采用了给每个数分别分解质因数的方法。
12=2×2×3
18=2×3×3
12与18都可以分成几种形式不同的乘积,但分成质因数连乘积就只有以上一种,而且不能再分解了。所分出的质因数无疑都能原数,因此这些质因数也都是原数的约数。从分解的结果看,12与18都有2和3,而它们的乘积2×3=6,就是 12与18的最大公约数。
采用分解质因数的方法,也是采用短除的形式,只不过是分别短除,然后再找和最大公约数。如果把这两个数合在一起短除,则更容易找出和最大公约数。
从短除中不难看出,12与18都有2和3,它们的乘积2×3=6就是12与18的最大公约数。与前边分别分解质因数相比较,可以发现:不仅结果相同,而且左边就是这两个数的公共质因数,而两个数的最大公约数,就是这两个数的公共质因数的连乘积。
实际应用中,是把需要计算的两个或多个数放置在一起,进行短除。
在计算多个数的最小公倍数时,对其中任意两个数存在的约数都要算出,其它无此约数的数则原样落下。最后把所有约数和最终剩下无法的数连乘即得到最小公倍数。
只含有1个质因数的数一定是。
(短除法详解:
短除符号就是除号倒过来。短除就是在除法中写的地方写两个数共有的,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果为止(两个数互质)。
而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是关系。
求最大公因数遍乘一边,求最小公倍数遍乘一圈。
(:亦称“公”。是几个整数同时均能整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。)
在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。求最大公约数遍乘左边所有数公共的因数,求最小公倍数遍乘一圈。这种方法对求两个以上数的最大公因数,特别是数目较大的数,显然是不方便的。于是又采用了给每个数分别的方法
Pollard Rho因数分解
1975年,John M. Pollard提出了第二种因数分解的方法,Pollard Rho快速因数分解。该算法时间复杂度为O(n^(1/4))。
分解质因数代码:
将一个正整数分解质因数。例如:输入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 "stdio.h"
#include "conio.h"
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i&=n;i++)
while(n!=i)
if(n%i==0)
printf("%d*",i);
printf("%d",n);
另一种形式:
//返回质因数数组
Integer[] decPrime(int n) {
List&Integer& list = new ArrayList&Integer&();
for (int i=2;i &=i++){
while(n != i){
if(n%i != 0){
//不能整除肯定不是因数,能够整除在这里一定是质数。因为所有的2,3,5,7
//都被除完之后。剩下的因数只能是奇数,且是质数。
list.add(Integer.valueOf(i));
list.add(Integer.valueOf(n));
return list.toArray(new Integer[list.size()]);
另外代码:
。我们用所有正整数试验一下,从2开始进行试除,逐步增加除数的值,去寻找一个可以整除n的数。在Eratosthenes筛法的讨论中,我们知道如果n是一个复合数,那么它就会有一个素数 。算法9.3所示的就是这种方法的伪代码。这个算法有两个偱环路径,外部的和内部的。外部循环求唯一因数,内部循环求一个因数的多个复本。例如, ,外部循环求出因数2和3。内部循环求出2是一个多因数。
void trial_divisio_fac(int n)
while(a*a&=n)
while(n%a==0)
if(n&1) cout&&n;//n没有因数
上面的代码解释比较清楚。为什么这种方法可以得到素数。
因为我们在内层循环中,已经把当前a的所有倍数都去除了。这跟埃斯托尼算法是一样的。
复杂度 如果 ,这种情况下试除法通常都是很有效的。但是如果用来分解更大的整数,试除法就变得非常低效甚至不可用了。这种算法的复杂度是随着n的增加呈指数级别增长的。
试除法是算法中最简单和最容易理解的算法。
给定一个n(这里,n是待分解的整数),试除法看成是用小于等于的每个素数去试除待分解的整数。如果找到一个数能够整除除尽,这个数就是待分解整数的因子。
运用试除算法求1233的因数。
转自:/youxin/p/3232049.html
您可能还会对这些文章感兴趣!百度题库_智能考试题库_让每个人都能高效提分的智能题库
职业资格类
职业资格类
京ICP证号&&
京网文[3号&&
Copyright (C) 2017 Baidu已解决问题
老师好,我想问一下最快的分解质因数的方法
我是新gre网络课堂的学生
提问时间: 15:18:57提问者:
同学你好,举例来说,可以把1800首先分解成18&100。18=2&9=2&3&3,100=4&25=2&2&5&5这样把一个数分解成两个数相乘,再把每个数表示成质因数相乘的形式,很快就把1800分解质因数。 感谢您对新东方在线的支持和信任如您的问题未能得到妥善解决或您遇其他问题请访问: 或联系售后客服400 676 2300
回答时间: 19:40:53
[知识堂达人]
考研直通车
英语四六级
商务英语/BEC
口语风暴课程
青春期问题
娱乐八卦吐槽
旗下成员公司 全国客服专线:400-676-3300 上海客服专线:021- 购卡咨询(上海):021-Copyright (C)
Inc. All rights reserved. 新东方在线 版权所有
京公安备110-1081940题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:&(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。(2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n. 重复执行第二步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。&&1&#include&&stdio.h&&2&&3&int&main()&4&{&5&&&&&//num要分解的数&6&&&&&//i已经分解出来的。&7&&&&&int&num,i;&8&&&&&printf("please&input&a&num:");&9&&&&&scanf("%d",&num);10&&&&&printf("%d=",num);11&12&&&&&//分解.从1到num检查,看看是不是因子。13&&&&&for(i=2;&i&=&i++)14&&&&&&&&&while(num%i==0)15&&&&&&&&&{16&&&&&&&&&&&&&num/=i;17&&&&&&&&&&&&&printf("%d*",i);18&&&&&&&&&}19&20&&&&&//1:输出最后一个因子。一定是1,如果上面for有=num也输出来了,所以只剩下121&&&&&//即:num==1;22&&&&&//2:如果for没有=num的情况,那么,不一定是1的情况,可能还是其他,可以根据自己的需要改。23&&&&&printf("%d",num);24&25&&&&&return&0;26&}&
阅读(...) 评论()

我要回帖

更多关于 把90分解质因数 的文章

 

随机推荐