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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2008, 04:33   #1
SYL@R
Пользователь
 
Регистрация: 09.06.2008
Сообщений: 25
По умолчанию help с задачкой

Даны натуральные числа р и q. Получить все делители числа q, взаимно простые с р.
SYL@R вне форума Ответить с цитированием
Старый 07.07.2008, 11:31   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Код:
var
  p, q: word;
  i, j: word;
  b: boolean;
begin
  p := 8;
  q := 60;
  for i := 2 to q do
  begin
    if q mod i = 0 then //если найден делитель числа q
    begin
      b := true;
      write(i:3); //выводим его на экран
      for j := 2 to i do
        if ((i mod j = 0) //пытаемся найти общий делитель
          and (i <> j)) //не равный 1 и не равный самому числу
          and (p mod j = 0)
          then b := false; //если нашли такой делитель
      if b then writeln('v':2) else writeln //ставим галочку если удовл условию задачи
    end
  end;
  readln
end.
eoln вне форума Ответить с цитированием
Старый 07.07.2008, 12:41   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Числа называются взаимно простыми, если их наибольший общий делитель равен 1. Поэтому используем функцию NOD(m,n);
Код:
uses crt;
var p,q,i:longint;
    k:byte;
function NOD(m,n:longint):longint;
begin
while m<>n do
if m>n then m:=m-n else n:=n-m;
NOD:=m;
end;
begin
clrscr;
write('p=');readln(p);
write('q=');readln(q);
for i:=2 to trunc(sqrt(q))do //перебирам до корня квадратного из q.
if (q mod i=0)and(NOD(i,p)=1)then
   begin
     writeln(i);
     k:=k+1;//считаем делители, подходящие по условию
   end;
if k=0 then writeln('Takih delitelej net!');//если к=0, выводим сообщение
readln
end.
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плз с задачкой Dendy Паскаль, Turbo Pascal, PascalABC.NET 6 05.02.2008 22:16
Помогите с задачкой по СИ pliz Общие вопросы C/C++ 7 10.12.2007 20:08
Помогите с задачкой Saniok Помощь студентам 4 29.09.2007 20:34
помогите с задачкой.. plz Diller Помощь студентам 3 28.09.2007 20:03
ПОМОГИТЕ С ЗАДАЧКОЙ!!!! Solny6ko YasnoE Помощь студентам 6 22.06.2007 09:09