Вопрос Программисты python, нужна помощь!

Регистрация
6 Сен 2013
Сообщения
64
Репутация
0
Спасибо
0
Монет
0
Я новичок. Не судите строго.
Нужно проверить, можно ли получить число n из k простых чисел. Допустим 15 можно получить из суммы 2 + 13.
Простые числа у меня получаются только списком (или словарем). Т. е. проверить я могу только перебором.
К примеру список простых чисел simple = [2, 3, 5, 7, 11, 13....]
Тогда:
simple = [2, 3, 5, 7, 11, 13....]
n = 10 # число, которое нужно получить
k = 2 # количество слагаемых
a = 0
for i in simple:
for j in simple:
if i + j == n:
a = a + 1
else:
a = a
if a > 0:
print("True")
else:
print("False")
Так вот, а как быть, если количество слагаемых (k) не определенное число, а переменная от 1 до 100?
 
Простые числа по-английски - prime numbers, не simple. Решение в лоб: формируем тьюпл из k номеров элементов numbers=(0,0,...0); в цикле while True проверяем, подходит ли сумма prime[numbers] for i in range(k), если да - break и выводим ответ, если нет - получаем следующий комплект номеров (увеличиваем на 1 нулевой элемент тьюпла, если prime[numbers[0]]>n, то делаем его 0 и увеличиваем 1-й элемент и т. д., если последний элемент больше n - break и не нашли). Возможно, в itertools есть что-то для упрощения этого, надо глянуть. Но рекурсией тут все значительно проще: функция f(n,k) если нам передали k=1, то проверяем n на простоту, если k>1, то в цикле проверяем, можно ли n представить как простое число p + f(n-p, k-1).
 
[LINE]арифметические сравнения не пробывал ?


1++;
в цикл и погнал пока не найдешь свое число.[/LINE]

upd!

не дочитал :)
 
Последнее редактирование:

Похожие темы

Ответы
1
Просмотры
1K
Назад
Сверху