Pascal. Помогите, пожалуйста, исправить ошибку. Оптимизировать код и т.п. не прошу, мне только надо заставить этот код работать правильно, все остальное я уже сделаю сама. Сама программа должна по заданному числу N находить так...

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.
Гость
Ответ(ы) на вопрос:
Гость
Function nod (a,b: integer): 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 n,max,i:int64;  Begin  write('n = '); Readln(n); max:=0; if n mod 2 = 0   then max:=n div 2  else for i:=1 to n div 2 do        if nod(i,n-i)>max then max:=i; writeln(max,' ',n-max,' ' ,nod(max,n-max)); End. Пример: n = 11111 271 10840 271
Не нашли ответ?
Ответить на вопрос
Похожие вопросы