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

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

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

На заданном числовом промежутке требуется найти все натуральные числа, которые имеют два разных представления в виде суммы: квадратов двух натуральных чисел (представления a2+b2 и b2+a2 считать одинаковыми)
Листинг программы
  1. Program summa_kubov;
  2. uses crt;
  3. var a,b,i,f,j,p,r,q:longint;
  4. begin
  5. clrscr;
  6. repeat
  7. write('Введите концы отрезка (Неотрицательные числа):');
  8. readln(a,b)
  9. until (a<b) and (a>0) and (ioresult=0);
  10. f:=0;
  11. writeln('На отрезке [',a,',',b,'] числа представимые в виде суммы квадратов:');
  12. for i:=1 to b-1 do
  13. for j:=i+1 to b do
  14. begin
  15. p:=i*i;
  16. q:=j*j;
  17. r:=p+q;
  18. if (r>a)and(r<b) then begin
  19. writeln(r,'=',p,'+',q);
  20. f:=f+1;end;end;
  21. if f=0 then writeln('Отсутствуют');
  22. repeat until keypressed
  23. end.
Нужно переделать эту программу ,что бы искала несколько представлений суммы кубов,а не так как в программе-одно.

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

textual
Листинг программы
  1. uses crt;
  2. var a,b,i,k,x1,y1,x2,y2:integer;
  3. begin
  4. clrscr;
  5. repeat
  6. writeln('Введите диапазон натуральных чисел a<b');
  7. readln(a,b);
  8. until(a>0)and(a<b);
  9. k:=0;
  10. for i:=a to b do
  11.  begin
  12.   for y1:=1 to trunc(sqrt(i)) do
  13.   for x1:=y1 to trunc(sqrt(i)) do
  14.   if (x1*x1+y1*y1=i) then
  15.    begin
  16.     for y2:=y1 to trunc(sqrt(i)) do
  17.     for x2:=y2 to trunc(sqrt(i)) do
  18.     if (x2*x2+y2*y2=i)
  19.     and(x1<>x2)and(y1<>y2)and(x1<>y2)and(y1<>x2)then
  20.      begin
  21.       writeln(i:5,'=',x1:2,'^2+',y1:2,'^2  ',x2:2,'^2+',y2:2,'^2');
  22.       k:=k+1;
  23.       if k mod 20=0 then
  24.        begin
  25.         write('Press enter');
  26.         readln;
  27.        end;
  28.      end;
  29.    end;
  30.  end;
  31. if k=0 then write('Таких чисел нет');
  32. readln
  33. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы