验证任意自然数的阶乘均可表示为任意个素数的乘积的形式。
Input
只有一行且只有一个正整数:n
( 2<= n <= 1000 )
Output
只有一行:一个等式,等式左边是n!,等式右边是从小到大排列的质因数连乘式
Sample Input
5
Sample Output
5!=2*2*2*3*5
pascal编程
多谢!!!!!!!!
偶钱少
多包涵
验证任意自然数的阶乘均可表示为任意个素数的乘积的形式。
Input
只有一行且只有一个正整数:n
( 2<= n <= 1000 )
Output
只有一行:一个等式,等式左边是n!,等式右边是从小到大排列的质因数连乘式
Sample Input
5
Sample Output
5!=2*2*2*3*5
pascal编程
多谢!!!!!!!!
偶钱少
多包涵
给LZ说一下算法吧:
阶乘是从1开始联乘到n,比如说5!=1×2×3×4×5。
自然数分为素数、合数和1共三种,任何一个合数都可以表示为至少2个素数的乘积。
因此求n阶乘的因子分解,只要逐一对从2到n的每个乘数进行因子分解,而后将结果累计即可。
为了便于因子分解,先要做一张小于n的平方根的素数表,用筛法就可以,结果保存成一个数组A。
另外建立一个数组B保存每个素数在因子分解中出现的累计次数。
而后从1到n,用试除法逐一进行因子分解,将每个素因子出现的次数累加到数组B的相应位置里。
最后检查数组B里面每个素因子出现的次数,将非0次的因子输出。
希望LZ可以根据上面的提示写出代码来。