Python
Объяснение:
код:
import random
n = random.randint(10, 100)
t = []
p = []
for i in range(1, n):
if n % i == 0:
i = str(i)
t += i
i = int(i)
for k in range(2, i):
if i % k == 0:
i = str(i)
p += i
break
t = list(map(int, t))
p = list(map(int, p))
for x in p:
if x in t:
t.remove(x)
t.remove(1)
if len(t) == 0:
t.append(n)
print(*t)
else:
s = [str(x) for x in t]
print('simple', '(', n, ')', '=', *s)
Python
Объяснение:
код:
import random
n = random.randint(10, 100)
t = []
p = []
for i in range(1, n):
if n % i == 0:
i = str(i)
t += i
i = int(i)
for k in range(2, i):
if i % k == 0:
i = str(i)
p += i
break
t = list(map(int, t))
p = list(map(int, p))
for x in p:
if x in t:
t.remove(x)
t.remove(1)
if len(t) == 0:
t.append(n)
print(*t)
else:
s = [str(x) for x in t]
print('simple', '(', n, ')', '=', *s)
Число
в двоичной системе счисления выглядит как единица и n нулей за ней.
То есть у числа
ровно 1533 значащих нуля, а у числа
их ровно 1022.
Разница же таких чисел порождает единицы между первыми единицами изначальных чисел. Например,
. Появилось 5-3 = 2 единицы и осталось 3 (от последнего числа) значащих нуля.
Зная это, мы можем разобраться, сколько значащих нулей в загаданном числе.
Теперь сложение.
Начинаем с самых больших разрядов. Понижаясь, вычитаем количество образовавшихся в середине единиц.
1022 - 502 - 1 = 519 - ответ.