[提问] 用哈希表求这道题, 牛们都来帮帮忙!!!!谢谢了,
pascal吧
全部回复
仅看楼主
level 4
我_很正经 楼主
【描述】
自然数N的阶乘(写成N!)被定义成从1到N的所有整数的乘积。例如:
5!=5*4*3*2*1=120
随着数N的增大,N!增长得非常快,5!=120, 10!=3628800。要列举那么大的数,
可用下列方法:不是直接列出该数,而是按照顺序列举出该数中各个质数因子出现的
次数,如825可描述为(01201),意思是对825分解质因数,这些质数因子中有0个2,
1个3,2个5,0个7,1个11。
编一程序,读入N值,按顺序输出N!所包含的质数因子的个数。
【输入文件】
输入文件只包含1个数字N (2<=N<100)
【输出文件】
输出文件是一个N!中所包含的质数因子的个数(从最小的质数开始)的序列,
数与数之间用一个空格隔开。
【举例1】
输入文件:
5
输出文件:
3 1 1
说明:5!中包含了3个2,1个3和1个5
【举例2】
输入文件:
53
输出文件:
49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1
请问牛们,   怎么用哈希表累计??
分解质因数的时候,这样打程序还需要什么改进么?
while n>1 do
begin
   i:=i+1;
while (n mod i)=0 do
begin
   write(i);
   n:=n/1;
   if n<>1 then write('*');
end;
请说下用哈希表累计的思路,如果有程序参考就更好了,   谢谢了,
2010年06月09日 23点06分 1
level 4
我_很正经 楼主
期待神牛出现!!!!
[Yeah]
2010年06月10日 08点06分 2
level 1
连质因数都忘记了,
2014年12月21日 11点12分 3
level 9
Var
 n,i,j,x:integer;
 a:array[1..100]of integer;
Begin
 readln(n);
 for i:=2 to n do
 begin
  x:=i;
  for j:=2 to x do
   while x mod j=0 do
   begin
    x:=x div j;
    inc(a[j]);
   end;
 end;
 write(a[2]);
 for i:=3 to 100 do
  if a[i]>0 then write(' ',a[i]);
 readln;
End.
2014年12月21日 12点12分 4
level 9
我勒个擦 打完程序才发现是坟帖
2014年12月21日 12点12分 5
1