Помощь - Поиск - Пользователи - Календарь
Полная версия: Факториал
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Dik
на сколько нулей заканчивается n! ????
Amro
Цитата
на сколько нулей заканчивается n! ????

В смысле?
Флогримм
Цитата
на сколько нулей заканчивается n! ????

зависит от n
Altair
Вот он и спрашивает как зависит.

Алгоритм такой:
считаешь факториал (эта тема неоднократно обсуждалась) а затем устраиваешь цикл, напрмиер : (n - полученный факториал, s - количество нулей считаем)
Код

repeat
If n mod 10 =0 then beginn:= n div 10;  inc(s); end;
until n mod 10 <> 0;
writeln(s);
volvo
Oleg_Z

Если я правильно помню, количество завершающих нулей в числе n! вычисляется так:

s := n div 5;
zx1024
Цитата
s := n div 5;

Не совсем
Код

s := 0;
j := 5;
while n >= j do
begin
 s := s + (n div 5);
 j := j * 10
end;
volvo
zx1024

Не работает ... sad.gif

Но вот какой алгоритм я нашел:
Если выписать все n сомножителей и разложить их на простые множители, то каждая пара 2 и 5 даст ровно один ноль. Пятерок будет меньше, чем двоек, поэтому достаточно проследить за ними. Одна пятерка встретится в каждом пятом числе, еще одна - в каждом двадцать пятом и т.д. Отсюда формула:

Число нулей в N! = [N/5] + [N/25] + [N/125] + ...

Код

var
 n, x, s: integer;
begin
 s := 0;
 write( 'n> ' ); readln(n);

 x := 5;
 while x <= n do
   begin
     inc(s, n div x);
     x := x * 5
   end;

 writeln(s, ' zeroes');
end.
zx1024
Да.
Я уже хотел исправить, но не успел.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.