我需要编写一个程序来查找展示n!(排除1)的最大方法。
例如:4!= 1x2x3x4 = 1x2x3x2x2。因此,您可以使用5个数字的乘积来显示4!。 因此,输入为4,输出为5。 5是您可以用来表示4!的最大数字数量。
简单地说,就是将阶乘数分解为质因数,计算它们的数量并显示出来。
我使用了一个“for”循环来计算1到“n”的所有质因数及其数量。
但是当“n”为100000时,速度很慢,需要8秒才能完成。我需要提高速度。
我认为问题在于分解函数。
int factors( int fact )
{
int i,cont,product=1, control;
cont=0;
control=fact;
for (i= 2;control != product;)
{
if ((fact%i == 0))
{
cont++;
fact/=i;
product*=i;}
else
i++;
}
return cont;
}
我需要改进它以获得最佳执行时间。或者,我用来从阶乘数中获取质因数的方法可能不是一个好选择?
注意:我不计算100000!的值。我只分解从1到10000的所有数字并计数。
100000!
的值吗?您有没有任何想法这个数字有多大? - Greg Hewgill100!
来得到它的最大质因数。 - Basile Starynkevitch