На заданном числовом промежутке требуется найти все натуральные числа, которые имеют два разных представления - Free Pascal

Узнай цену своей работы

Формулировка задачи:

На заданном числовом промежутке требуется найти все натуральные числа, которые имеют два разных представления в виде суммы: квадратов двух натуральных чисел (представления a2+b2 и b2+a2 считать одинаковыми)
 Program summa_kubov;
uses crt;
var a,b,i,f,j,p,r,q:longint;
begin
clrscr;
  repeat
  write('Введите концы отрезка  (Неотрицательные числа):');
  readln(a,b)
  until (a<b) and (a>0) and (ioresult=0);
  f:=0;
  writeln('На отрезке [',a,',',b,'] числа представимые в виде суммы квадратов:');
  for i:=1 to b-1 do
  for j:=i+1 to b do
  begin
  p:=i*i;
  q:=j*j;
  r:=p+q;
  if (r>a)and(r<b) then   begin
  writeln(r,'=',p,'+',q);
  f:=f+1;end;end;
if f=0 then writeln('Отсутствуют');
repeat until keypressed
end.
Нужно переделать эту программу ,что бы искала несколько представлений суммы кубов,а не так как в программе-одно.

Решение задачи: «На заданном числовом промежутке требуется найти все натуральные числа, которые имеют два разных представления»

textual
Листинг программы
uses crt;
var a,b,i,k,x1,y1,x2,y2:integer;
begin
clrscr;
repeat
writeln('Введите диапазон натуральных чисел a<b');
readln(a,b);
until(a>0)and(a<b);
k:=0;
for i:=a to b do
 begin
  for y1:=1 to trunc(sqrt(i)) do
  for x1:=y1 to trunc(sqrt(i)) do
  if (x1*x1+y1*y1=i) then
   begin
    for y2:=y1 to trunc(sqrt(i)) do
    for x2:=y2 to trunc(sqrt(i)) do
    if (x2*x2+y2*y2=i)
    and(x1<>x2)and(y1<>y2)and(x1<>y2)and(y1<>x2)then
     begin
      writeln(i:5,'=',x1:2,'^2+',y1:2,'^2  ',x2:2,'^2+',y2:2,'^2');
      k:=k+1;
      if k mod 20=0 then
       begin
        write('Press enter');
        readln;
       end;
     end;
   end;
 end;
if k=0 then write('Таких чисел нет');
readln
end.

Объяснение кода листинга программы

  1. Объявление переменных: a, b, i, k, x1, y1, x2, y2: integer.
  2. Очистка экрана с помощью функции clrscr.
  3. Повторяющийся блок, который продолжается до тех пор, пока пользователь не введет корректный диапазон чисел (a > 0 и a < b).
  4. Установка счетчика k в 0.
  5. Два вложенных цикла, которые перебирают все числа в заданном диапазоне от a до b.
  6. Внутренний цикл проверяет все возможные значения x1 и y1, которые являются квадратами целых чисел, на то, является ли их сумма равной текущему числу i.
  7. Если внутренний цикл находит совпадение, то проверяется внешний цикл на наличие другого совпадения.
  8. Если внешнее совпадение найдено, то число i выводится на экран вместе с двумя представлениями, и счетчик k увеличивается на 1.
  9. Если k становится кратным 20, то программа выводит сообщение Press enter и ожидает нажатия клавиши Enter.
  10. Если после прохождения всех циклов счетчик k равен 0, то выводится сообщение Таких чисел нет.
  11. Конец программы с помощью функции readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы