Программа для разложения числа на произведение просты
Модератор: Модераторы
Программа для разложения числа на произведение просты
Есть задание:
В голове крутиться мысль про использование операторов For, только никак не могу ее прояснить. Ведь множителей, как я понял, может быть и два, и три, и десять? Как узнать, сколько именно их должно быть?
В голове крутиться мысль про использование операторов For, только никак не могу ее прояснить. Ведь множителей, как я понял, может быть и два, и три, и десять? Как узнать, сколько именно их должно быть?
-
Михаил Крамер
- новенький
- Сообщения: 73
- Зарегистрирован: 08.02.2008 13:26:40
Чегой-то у нас ветка в решебник превращается. Ну так попробовать можно:
Сделал для одного числа, для многих, думаю разберётсь. Может кто лучше напишет - писал на работе между делом.
Код: Выделить всё
var
numb, powers: array [1..100] of integer;
c, n, n1, i: integer;
begin
c:= 120;
n:= 1;
n1:= 0;
while c <> 1 do
begin
i:= 2;
while c mod i <> 0 do
Inc(i);
Inc(n1);
if n1 = 1 then
begin
numb[n]:= i;
powers[n]:= 1;
end
else if numb[n] = i then Inc(powers[n])
else
begin
Inc(n);
numb[n]:= i;
powers[n]:= 1;
end;
c:= c div i;
end;
writeln(n);
write('num = ');
for i:= 1 to n do
begin
write(numb[i], ' ^ ', powers[i]);
if i <> n then write(' * ');
end;
writeln;
end.
Сделал для одного числа, для многих, думаю разберётсь. Может кто лучше напишет - писал на работе между делом.
Чегой-то у нас ветка в решебник превращается
Ну это потому что я паскаль по учебнику изучаю, поэтому и преваращается ) А до меня что из себя эта ветка представляла?
- Deepthroat
- постоялец
- Сообщения: 144
- Зарегистрирован: 06.09.2007 00:21:34
- Откуда: Outer Heaven
- Контактная информация:
[offtop]
Прочитал название темы (про разложение числа на простые сомножители) и уже было подумал, что кто-то алгоритмы шифрования с открытым ключем ломать решил
[/offtop]
Прочитал название темы (про разложение числа на простые сомножители) и уже было подумал, что кто-то алгоритмы шифрования с открытым ключем ломать решил
[/offtop]
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Года 4 назад решал примерно таким образом:
Оригинальное решение где-то далеко в бекапах - потому восстанавливал по памяти, может что забыл
(фишка в том, что по раскладываемое число уменьшается за чет выкидывания уже найденых делителей: уменьшается число - уменьшается число перебираемых значений)
Код: Выделить всё
var
N: Integer;
x, p: Integer;
begin
readln(N);
if N <= 0 then
begin
writeln('Error: N <= 0');
exit;
end; // if
if N <= 1 then
begin
writeln(1);
exit;
end; // if
x := 2;
while x < sqrt(N) do
begin
if (N mod x) = 0 then
begin
p := 1;
N := N div x;
while (N mod x) = 0 do
begin
N := N div x;
p := p + 1;
end; // if
writeln(x, '^', p);
end; // if
x := x + 2;
end; // while
if N > 1 then
begin
writeln(N, '^1');
end; // if
end.
Оригинальное решение где-то далеко в бекапах - потому восстанавливал по памяти, может что забыл
(фишка в том, что по раскладываемое число уменьшается за чет выкидывания уже найденых делителей: уменьшается число - уменьшается число перебираемых значений)
А что значит
и// if
в некоторых местах программы? Это ты комментарий так обозначил? Комментарии же вроде фигурными скобками {...} обозначаются.// while
- Deepthroat
- постоялец
- Сообщения: 144
- Зарегистрирован: 06.09.2007 00:21:34
- Откуда: Outer Heaven
- Контактная информация:
В Delphi и FPC комментарии могут обозначаться так:
{ многострочный комментарий }
(* многострочный комментарий *)
//однострочный комментарий
В TurboPascal, если мне не изменяет память, однострочных комментариев нет.
{ многострочный комментарий }
(* многострочный комментарий *)
//однострочный комментарий
В TurboPascal, если мне не изменяет память, однострочных комментариев нет.
"//" строку не комментит, значит таких однострочных комментариев в TurboPascal нет. Может, shade спутал с чем-то?
- Deepthroat
- постоялец
- Сообщения: 144
- Зарегистрирован: 06.09.2007 00:21:34
- Откуда: Outer Heaven
- Контактная информация:
Ничего он не спутал. Вы же не думаете, что Shade использовал TurboPascal?! И Вам зачем именно TurboPascal, не понятно. Скачайте fpc и тренируйтесь в нем.
-
SergeySmlInf
- новенький
- Сообщения: 40
- Зарегистрирован: 02.10.2007 07:59:26
- Откуда: Смоленск
Ребята! Для Ваших задач лучше всего - ABCPascal = и учебный, и с учебником, и под любую винду...
