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