Pascal. Помогите, пожалуйста, исправить ошибку. Оптимизировать код и т.п. не прошу, мне только надо заставить этот код работать правильно, все остальное я уже сделаю сама. Сама программа должна по заданному числу N находить такие числа a и b, которые в сумме будут давать N и их НОД будет максимален. (т.е. их НОД будет больше НОДа в любой другой такой паре). Function nod (var a,b: integer): integer; Var c: integer; Begin Repeat if a > b then a:= a mod b else b:= b mod a; until (a = 0) or (b = 0); nod:= a + b; End; Var a,a1,a2,max,a3,a4:int64; Begin Readln(a); a1:= a div 2; a2:= (a div 2)+1; max:=1; if a mod 2 = 0 then Writeln (a div 2,,a div 2) else while a1>0 do begin if NOD(a1,a2) > max then max:= NOD(a1,a2); a1:=a1-1; a2:=a2+1; end; a1:= a div 2; a2:= (a div 2)+1; while a1>0 do begin if NOD(a1,a2) = max then a1:=a3, a2:=a4; a1:=a1-1; a2:=a2+1; end; Writeln(a3,,a4); End.
⭐⭐⭐⭐⭐ Лучший ответ на вопрос «Pascal. Помогите, пожалуйста, исправить ошибку. Оптимизировать код и т.п. не прошу, мне только надо заставить этот код работать правильно, все остальное я уже сделаю сама. Сама программа должна по заданному числу N находить такие числа a и b, которые в сумме будут давать N и их НОД будет максимален. (т.е. их НОД будет больше НОДа в любой другой такой паре). Function nod (var a,b: integer): integer; Var c: integer; Begin Repeat if a > b then a:= a mod b else b:= b mod a; until (a = 0) or (b = 0); nod:= a + b; End; Var a,a1,a2,max,a3,a4:int64; Begin Readln(a); a1:= a div 2; a2:= (a div 2)+1; max:=1; if a mod 2 = 0 then Writeln (a div 2,,a div 2) else while a1>0 do begin if NOD(a1,a2) > max then max:= NOD(a1,a2); a1:=a1-1; a2:=a2+1; end; a1:= a div 2; a2:= (a div 2)+1; while a1>0 do begin if NOD(a1,a2) = max then a1:=a3, a2:=a4; a1:=a1-1; a2:=a2+1; end; Writeln(a3,,a4); End.» от пользователя Уля Карасёва в разделе Экономика. Задавайте вопросы и делитесь своими знаниями.
Открой этот вопрос на телефоне - включи камеру и наведи на QR-код!