Автор | Сообщение |
|
Отправлено: 22.12.21 18:05. Заголовок: 25 задание задача 153
def p(x): for d in range(2, int(x**0.5)+1): if x%d==0: return False return True for i in range(1,int(1000000**0.25)+1): d=1 b=[] if p(i): if i%d==0: b.append(d) if len(b)==1600: print(i) d=d*2 Непонятно какой диапазон нужно рассматривать
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 3117
|
|
Отправлено: 22.12.21 18:13. Заголовок: 1) Для оформления пр..
1) Для оформления программы воспользуйтесь советом в желтой рамке вверху. 2) Эта задача вот так в лоб не решается. 3) Все решения 25-х задач есть на сайте.
|
|
|
|
Отправлено: 08.02.22 16:57. Заголовок: Об алгоритме решения этого задания
Огромная просьба, добавить разбор алгоритма решения этого задания. Да, на сайте есть решение, можно найти в различных источниках и математическое обоснование - основную теорему арифметики. Особое внимание хотелось бы, чтобы было уделено разбору задач №156 и 157, там где количество делителей является степенью одного простого числа: 729 = 3^6, например. Заранее спасибо.
|
|
|
|
| постоянный участник
|
Сообщение: 414
|
|
Отправлено: 02.03.22 13:37. Заголовок: видимо, в программе ..
видимо, в программе на сайте и в ответах ошибка для 729 primeFactors [3,3,3,3,3,3] primes [2,3,5,7,11,13] N=2^2 * 3^2 * 5^2 * 7^2 * 11^2 * 13^2 мы N делим на 13 и умнажаем на 2^3 N=2^5 * 3^2 * 5^2 * 7^2 * 11^2 * 13 но primeFactors станет [6,3,3,3,3,2], а это не 729 и 13 удаляется из primes должно быть primeFactors [9,3,3,3,3] primes [2,3,5,7,11] речь об этом куске кода k2 = primeFactors[0] lastPrime = primes[-1] while 2**k2 < lastPrime: N = N // lastPrime * 2**k2 k2 *= 2 del primes[-1] lastPrime = primes[-1] думаю должно быть так: k2 = primeFactors[0] lastPrime = primes[-1] while 2**k2 < lastPrime: k = k2 while 2 ** k < lastPrime and primeFactors[-1] - 1 > 0: N = N // lastPrime * 2**k k2 += k primeFactors[-1] -= 1 del primes[-1] del primeFactors[-1] lastPrime = primes[-1]
|
|
|
|