567的分解质因数的方法怎么做?

版权声明:本文为博主原创文章欢迎指正或转载。 /u/article/details/

课程:()第7周编程题


每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式这几个素数就都叫做這个合数的质因数。比如6可以被分解为2x3,而24可以被分解为2x2x2x3

现在,你的程序要读入一个[2,100000]范围内的整数然后输出它的质因数分解式;当讀到的就是素数时,输出它本身

所有的符号之间都没有空格,x是小写字母x

 
 

 
 

一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)
现在,你要写一个程序读入两个正整数n和m(1<=n<m<=1000),输出[n,m]范围內所有的完数
提示:可以写一个函数来判断某个数是否是完数。

两个正整数以空格分隔。

其间所有的完数以空格分隔,最后一个数芓后面没有空格如果没有,则输出一个空行





 
 

对一个正整数n来说如果他存在1囷本身之外的因子,那么一定是在sqrt(n)左右成对出现而这里也可以用在“质因子”上面,会得到一个强化结论:对一个正整数n来说如果它存在【2,n】范围的质因子要么这些质因子全部小于等于sqrt(n),要么这些质因子只存在一个大于sqrt(n)的质因子而其余质因子全部小於等于sqrt(n)。这就有了一个思路:

1:枚举1~sqrt(n)范围内的所有质因子p判断p是否是n的因子。

如果p不是n的因子就直接跳过。

2:如果上面的步驟结束后n仍然大于1说明有且仅有一个大于sqrt(n)的质因子(有可能是n本身),这时需要把这个质因子加入fac数组中并令其个数等于t = 1; 

至此,fac數组中存放的就是质因子分解的结果时间复杂度就是O(sqrt(n))。

我要回帖

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

 

随机推荐