Для того, чтобы перевести целое число из десятичной в двоичную систему счисления, необходимо разделить его на два, а затем делить на два каждое полученное частное до тех пор, пока не получится единица. Искомое двоичное число записывается как последовательность цифр, равных последнему частному (единице) и всем полученным остаткам, начиная с последнего.
Надо перевести сначала 21 в двоичную, потом 2 в двоичную и потом 2002 в двоичную
Получается вот так: 21 = 10101 2=10 2002 = 11111010010
Надо перевести сначала 21 в двоичную, потом 2 в двоичную и потом 2002 в двоичную
Получается вот так:
21 = 10101
2=10
2002 = 11111010010
В итоге:
10101.10.11111010010
Для нахождения нода используется алгоритм Эвклида
//PascalABC.Net
function NOD(A, B: integer): integer;
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
procedure pNOD(A, B: integer; var NOD: integer);
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
begin
var a: Array of integer := (16, 32, 40, 64, 80, 128);
var n := a[low(a)];
for var i := low(a) to high(a) do
pNOD(n, a[i], n);
Writeln(n);
end.