Вы хотите получить список заказанных продуктов n x m
, чтобы n
и m
были натуральными числами и 1 < (n x m) < upper_limit
, скажем uper_limit = 100
.Также n и m не могут быть больше квадратного корня верхнего предела (поэтому n <= 10
и m <= 10
).Самое простое, что можно сделать, - это сгенерировать все продукты со списком, а затем отсортировать результат.
sorted(n*m for n in range(1,10) for m in range(1,n))
Однако, когда upper_limit
становится очень большим, это не очень эффективно, особенно еслицель состоит в том, чтобы найти только одно число с учетом определенных критериев (например, найти максимальный продукт таким образом, чтобы ... -> Я хотел бы сгенерировать продукты в порядке убывания, протестировать их и остановить весь процесс, как только я найду первыйчто соответствует критериям).
Итак, как сгенерировать эти продукты по порядку?
Первое, что я сделал, это начался с upper_limit и пошел назад один за другим, делая двойнойtest: - проверка, может ли число быть произведением n и m - проверка критериев. Опять же, это не очень эффективно ... Какой-нибудь алгоритм, который решает эту проблему?