IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Разложение нескольких чисел на простые, На входе дано несколько чисел. Каждое число разложите на простые.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


На входе дано несколько чисел. Каждое число разложите на простые.
Каждое разложение должно быть записано в отдельной строчке. Если число состоит из нескольких простых, то простые должны быть разделены пробелом.
Все числа положительные и меньше 2^31.

Пример:
6
15
23
128

Выдача:
2 3
3 5
23
2 2 2 2 2 2 2

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Хорошо. А вопрос-то какой?.. blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


вот тут Разложение чисел на простые множители что то подобное уже решалось.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


Вопрос в написать программу.
Я воспользовался уже имеющимися решениями. Вот что полоучилось:


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.



Эта прога решает приведенный выше пример, но есть баги: например если первое число 9, а второе 15, то ответ - разложение первого и второго числа она выводит на одной строчке, а должна на разних.
Не могу решить, самого важного: кол-во чисел неопределено и разложение должно работать для чисел до 2 в 31-ой.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Н-да.. Впервые вижу ТАКОЙ нечесаный код... Даже арифметические операторы гуляют по строчкам безо всякой нужды..
Короче, вот, поработал над твоим текстом. Ошибки исправил и много чего еще. Но там все равно еще далеко до зачетного варианта smile.gif. Разбирайся:
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;

Но он перемежает вводимые числа и результаты. Если это тебя смущает - надо запоминать входные данные в массив: читать ввод в цикле до ввода нуля, считая количество введенных чисел, а потом все в цикле же и обработать.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Еще одна проблема - с диапазоном чисел. У тебя вообще тип word, что ограничивает все числом 65535. Замени его на LongInt.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.12.2020 0:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name