Найти наибольший общий делитель следующих чисел(16 32 40 64 80 128). Использовать...

0 голосов
27 просмотров

Найти наибольший общий делитель следующих чисел(16 32 40 64 80 128). Использовать процедуру для нахождения общего делителя. ПАСКАЛЬ!!!


Информатика (140 баллов) | 27 просмотров
0

у тебя есть алгоритма для нахождение нод?

0

не знаю

0

массивы можно использовать?

0

новерное да

0

проверь на компьютере

Дан 1 ответ
0 голосов

Var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real;

procedure nod( var dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 :real; );
var a:array[1..6] of real;
i : integer;
begin
dv1:=100;
tr1:=100;
pt1:=100;
for i:= low(a) to high (a) do begin
readln(a[i]);
repeat
if( (a[i] mod 2) =0) then begin
a[i]:=a[i]/2;
dv:=dv+1;
end
else if( ( a[i] mod 3)=0) then begin
a[i]:=a[i]/3;
tr:=tr+1;
end
else if ( ( a[i] mod 5)=0) then begin
a[i]:=a[i]/5;
pt:=pt+1;
end;

untill(a=1);
if dvif trif ptdv:=0;
tr:=0;
pt:=0;
end;
if dv1>0 then dv2:=dv1*2 else dv2:=1;
if tr1>0 then tr2:=tr1*3 else tr2:=1;
if pt1>0 then pt2:=pt1*5 else pt2:=1;
nod:=dv2*tr2*pt2;
writeln(nod);
end;
begin
nod( dv,tr,pt,dv1,tr1,pt1,dv2,tr2,pt2 );
end.


end;

(446 баллов)
0

не пропечатолось после until (a[i])=1 надо написать if dv

0

не печатается(

0

if dv < dv1 then dv1:=dv;

0

dv меньше dv1

0

так же для tr и tr1 pt и pt1

0

в конце замените dv2:= power( 2,d1)

0

tr2:=power(3,tr1)

0

pt2:=power(3,pt1)

0

через чур сложно чтоб быть оптимальным