Найти номер строки массива размером МхN, в котором находится наименьшее количество положительных элементов. Элементы вводятся с клавиатуры. (язык паскаль (
Итак, нужно найти число групп, в каждой из которых ни одно из чисел не делит все остальные.
Строим группы так: (1) - 1 (2) - 2, 3, 5, 7, 11, 13... - все простые (3) - 4, 6, 9, 10, 14, 15... - произведения двух простых ... (k) - произведения (k - 1) простых
И так пока не кончатся все числа. Поскольку в каждой группе наименьшее число 2^(k - 1), то k - минимальное, для которого 2^(k - 1) > N
По построению явно во всех группах ни одно число не делится на другое. Осталось проверить, что получено минимальное число групп. Это очевидно: числа 1, 2, 4, ..., 2^(k-1) должны быть в разных группах.
Решение: n = int(input()) t = 1 k = 0 while t <= n: t *= 2 k += 1 print(k)
Строим группы так:
(1) - 1
(2) - 2, 3, 5, 7, 11, 13... - все простые
(3) - 4, 6, 9, 10, 14, 15... - произведения двух простых
...
(k) - произведения (k - 1) простых
И так пока не кончатся все числа. Поскольку в каждой группе наименьшее число 2^(k - 1), то k - минимальное, для которого 2^(k - 1) > N
По построению явно во всех группах ни одно число не делится на другое. Осталось проверить, что получено минимальное число групп.
Это очевидно: числа 1, 2, 4, ..., 2^(k-1) должны быть в разных группах.
Решение:
n = int(input())
t = 1
k = 0
while t <= n:
t *= 2
k += 1
print(k)