На заданном числовом промежутке требуется найти все натуральные числа, которые имеют два разных представления - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д