Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2008, 01:02   #1
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию Разложение числа на множители

Дано натуральное число. Напечатать разложение этого числа на простые множители. Реализовать два варианта:
a) каждый простой множитель должен быть напечатан столько раз, сколько раз он входит в разложение.
b) каждый простой множитель должен быть напечатан один раз.

Вариант а) я сделал вот так :
Код:
	
chislo:=StrToInt(Edit1.Text);
i:=2;
while chislo >= i do
  if (chislo mod i) = 0 then
    begin
      Memo1.Lines.Add(IntToStr(i));
      chislo:= chislo div i;
        if chislo >= i then
          Memo1.Lines.Add('*');
    end
  else
  i:=i+1;
Плз, помогите с вариантом b) ???
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 31.12.2008, 02:43   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

ну запоминай в массив какие были множители и потом смотри if присуствует в массиве then не выводи else выводи
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 31.12.2008, 20:09   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ozerich я тоже так хотел, но у меня не получается.
Если не тяжело можешь привести пример.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 31.12.2008, 21:17   #4
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию а)

uses crt;
var
i,n,:integer;
begin
clrscr;
write(' -> ');
readln(n);
writeln;
i:=2;
write(n,'=');
while (n mod i=0) and (i<=n) do
begin
write(i,' ');
n:=n div i;
end;
i:=3;
while n>=i do
begin
while (n mod i=0) do
begin
write(i,' ');
n:=n div i;
end;
i:=i+2;
end;
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 31.12.2008, 21:17   #5
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию б)

uses crt;
var
mas:array[1..20] of integer;
f:boolean;
i,n,j,k:integer;
begin
clrscr;
write(' -> ');
readln(n);
writeln;
i:=2;
k:=0;
for j:=1 to 20 do
mas[j]:=0;
while (n mod i=0) and (i<=n) do
begin
f:=true;
for j:=1 to 20
do
if mas[j]=i then f:=false;
if f then begin k:=k+1; mas[k]:=i; end;
n:=n div i;
end;
i:=3;
while n>=i do
begin
while (n mod i=0) do
begin
f:=true;
for j:=1 to 20
do
if mas[j]=i then f:=false;
if f then begin k:=k+1; mas[k]:=i; end;
n:=n div i;
end;
i:=i+2;
end;
for i:=1 to k do
write(mas[i],' ');
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 01.01.2009, 12:32   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Tkirill, спасибо за помощь.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разложение на простые множители pakusya Помощь студентам 2 19.12.2011 15:55
Разложение числа на простые делители PROFI_I Общие вопросы Delphi 2 09.12.2008 18:17
Паскаль. Разложение на множители. Arizonec Помощь студентам 3 13.11.2008 00:41
Разложение числа на простые множители artem_MG Паскаль, Turbo Pascal, PascalABC.NET 3 24.10.2008 19:28
Разложение числа на слагаемые Oleg-vp Общие вопросы Delphi 5 30.10.2007 10:43