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.
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