На входе дано несколько чисел. Каждое число разложите на простые.
Каждое разложение должно быть записано в отдельной строчке. Если число состоит из нескольких простых, то простые должны быть разделены пробелом.
Все числа положительные и меньше 2^31.
Пример:
6
15
23
128
Выдача:
2 3
3 5
23
2 2 2 2 2 2 2
Хорошо. А вопрос-то какой?..
вот тут http://forum.pascal.net.ru/index.php?showtopic=11200 что то подобное уже решалось.
Вопрос в написать программу.
Я воспользовался уже имеющимися решениями. Вот что полоучилось:
procedure Factorization(x: word);
var i: word;
procedure DivX;
begin
while (x>1)
and (x
mod i = 0)
do
begin
write(i:4); x:= x
div i;
end;
end;
begin i:=2; DivX; i:=3;
while (i < x
div 2)
do
begin DivX; inc(i,2);
end;
if x>1
then writeln(x:15);
end;
var x,a,b,c,d,e :word;
begin
readln (a);
readln (b);
readln ©;
readln (d);
x:=a;
Factorization(x);
x:=b;
Factorization(x);
x:=c;
Factorization(x);
x:=d;
Factorization(x);
readln;
readln;
end.
Н-да.. Впервые вижу ТАКОЙ нечесаный код... Даже арифметические операторы гуляют по строчкам безо всякой нужды..
Короче, вот, поработал над твоим текстом. Ошибки исправил и много чего еще. Но там все равно еще далеко до зачетного варианта . Разбирайся:
procedure Factorization(x: word);
var
i: word;
procedure DivX;
begin
while (x>1) and (x mod i = 0) do begin
write(i,' ');
x:= x div i;
end;
end;
begin
i:=2;
DivX;
i:=3;
while (i < x div 2) do begin
DivX;
inc(i,2);
end;
if x>1 then writeln(x) else WriteLn;
end;
var x,a,b,c,d,e :word;
begin
readln (a);
readln (b);
readln ©;
readln (d);
Factorization(a);
Factorization(b);
Factorization( c);
Factorization(d);
readln;
end.
repeat
readln (a);
if a>1 then Factorization(a);
until a=0;
Еще одна проблема - с диапазоном чисел. У тебя вообще тип word, что ограничивает все числом 65535. Замени его на LongInt.