М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Катя709015
Катя709015
21.03.2022 20:18 •  Информатика

Как можно найти НОД двух натуральных чисел не используя алгоритм евклида? какой метод лучше? Сравните этот алгоритм с алгоритмом евклида. ​

👇
Ответ:
tanabybka
tanabybka
21.03.2022

для нахождения НОДа не мало, не буду углубляться во всякие сложные алгоритмы, так как вряд ли Вы их проходите.

Сравним перебор и алгоритм Евклида, сразу можем сказать, что алгоритм Евклида в разы быстрее, так как при переборе мы тупо перебираем значения, то есть, данный алгоритм зависит от величины числа очень сильно. Конечно, алгоритм Евклида также зависит от введенного числа, однако, в нём будет намного меньше повторений, нежели в с перебором.

Можем глянуть немного статистики:

Генерируется 500 пар чисел

Перебор - 0.5022 с

Алгоритм Евклида - 0.0008

Теперь мы точно можем сделать вывод, что алгоритм Евклида в разы быстрее простого перебора.

4,7(39 оценок)
Ответ:
keewowzor2h
keewowzor2h
21.03.2022

Відповідь:

#НОД чисел 45 и 105

a = 45;

b = 105;

result = False;

if (a > b):

   big = a;

else:

   big = b;

   

i = 2;

while (i <= big):

   if ((a % i == 0) and (b % i == 0)):

       result = i;

   i += 1;

print (result);

Пояснення:

4,4(67 оценок)
Открыть все ответы
Ответ:
nazuli
nazuli
21.03.2022
Задание 1.
а) представим -17₁₀ в обратном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
б) представим 22 в обратном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
\displaystyle \quad 11101110 \\ +00010110 \\ ------ \\ |1|00000100
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). В этом случае перенос нужно осуществить в младший разряд, т.е. сложить результат с единицей
и окончательно получим 00000101

Задание 2.
а) представим -17₁₀ в дополнительном коде на 8-битном регистре
- запишем число 17₁₀ в двоичной системе: 10001₂
- дополним его слева нулями до 8 знаков: 00010001
- поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110
- прибавляем единицу в младший разряд: 11101111
б) представим 22 в дополнительном коде на 8-битном регистре
- запишем число 22₁₀ в двоичной системе: 10110₂
- дополним его слева нулями до 8 знаков: 00010110
- поскольку число положительное, его не нужно менять.
в) выполняем сложение
\displaystyle \quad 11101111 \\ +00010110 \\ ------ \\ |1|00000101
Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). При суммировании в дополнительном коде переполнение игнорируется, поэтому результат не меняется.
4,4(28 оценок)
Ответ:
dianaevdokimova77
dianaevdokimova77
21.03.2022

1)

var a,b,x,y:longint;

begin

write("Vvedite nachalo i konec otrezka: ");

read(a,b);

write("Vvedite x: ");

read(x);

y:=sqr(x)*x;

if (y>a)and(y<b) then write("Na dannom otrezke znachenie funkcii ravno ",y) else write("Na dannom otrezke net reshenii");

readln

end.

2)

var c,i:byte;

begin

for i:=49 to 215 do

if (i mod 4=0) then c:=c+1;

write("Kolichestvo chisel, kratnyh 4 na zadannom promezhutke ravno ",c);

readln

end.

3)

var i:integer;

p:longint;

for i:=1000 to 9999 do

if (i mod 10=3) then p:=p*i;

write("Proizvedenie chetyrehznachnyh chisel, okanchivaushihsya na 3 ravno ",p);

readln

end.

4)

var i:byte;

c:integer;

begin

for i:=221 to 778 do

if ((i mod 10)=(i div 100)) then c:=c+1;

write("Kolichestvo chisel ravno ",c);

readln

end.

5)

var i:longint;

c:integer;

begin

for i:=10000 to 99999 do

if ((i mod 10)=(i div 10000))and(((i mod 100)div 10)=((i div 1000)mod 10)) then c:=c+1;

write("Kolichestvo chisel ravno ",c);

readln

end.

4,4(34 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ