2 задачи на Паскале

Ответить
Mishania
Сообщения: 6
Зарегистрирован: 11 май 2005, 21:08

19 май 2005, 19:13

Помогите решить пожайлуста задачи.Заранее благодарен!
1.Натуральные числа a,b,c называются числами Пифагора,если выполняется условие a в квадрвте+b в квадрате=c в квадрате.Напечатать все числа Пифагора
меньшие N
2.Дано натуральное число N.Найти наибольшее число M(m>1) на которое сумма цифр в числовой записи числа N делится без остатка.Если такого числа нет то вывести нет.
Mihij
Сообщения: 55
Зарегистрирован: 03 май 2004, 11:58
Откуда: Санкт-Петербург
Контактная информация:

21 май 2005, 01:35

Mishania, задачи несложные, но на каком языке нуж-то?
Mishania
Сообщения: 6
Зарегистрирован: 11 май 2005, 21:08

22 май 2005, 19:37

Да спасибо! Если сможешь то напиши их листинг на Паскале!
Очень прошу....
Snark13
Сообщения: 2
Зарегистрирован: 24 янв 2005, 13:04
Откуда: SPb
Контактная информация:

24 май 2005, 14:30

Что касается первой задачи, то решение может быть следующим:

Код: Выделить всё

procedure Piphagor(N:Integer);
var a,b,c,c2:Integer;
begin
  if N<=0 then
  begin
    WriteLn('N<=0');
    Exit;
  end
  for a:=1 to N do
    for b:=a to N do
    begin
      c2:=sqr(a)+sqr(b);
      c:=Round(sqrt(c2));
      if (sqr(c)=c2) then
         writeln('a=',a,', b=',b,', c=',c);
    end;
end;
Для второй задачи, решение "в лоб" может быть следующим:

Код: Выделить всё

procedure Delitel(N:Integer);
var M,i,X:Integer;
  S:string;
begin
  if N<=0 then
  begin
    WriteLn('N<=0');
    Exit;
  end;
  M:=0; //Сюда будет записана сумма цифр
  S:=IntToStr(N); //строковое представление числа
  for i:=1 to Length(S) do
    M:=M+StrToInt(S[i]);
  X:=1; //Делитель, который мы ищем
  for i:=1 to Round(M/2) do
    if (M mod i)=0 then
      X:=i;
  if X=1 then
    WriteLn('НЕТ') //Получили простое число, делителей нет
  else
    WriteLn('Делитель=',X);


end;
Вопрос об оптимальности данных решений не поднимался :D
Совместимость с чистым Pascal не гарантируется, теститровалось консольное приложение в Delphi
Ответить