Написал программу, она вычисляет, но только первых 7, а дальше все- зависает
как бы исправить, чтобы первые 100 найти?
код:
sp = {}
for i in range(0,100000000000000+1):
n = 0
for j in range(2,i//2 +1):
if i%j == 0:
n+=1
if n >3:
break
sp[n]=i
if n==3:
print(sp[1])

Ровно 5 делителей (включая 1 и само число) имеет только простое число, возведённое в четвёртую степень.
def is_prime(n):
~~if n % 2 == 0 or n < 2: return n == 2
~~i = 3
~~while i * i <= n:
~~~~if n % i == 0: return False
~~~~i += 2
~~return True
i, c = 1, 0
while c < 100:
~~if is_prime(i):
~~~~print(i ** 4)
~~~~c += 1
~~i += 1
1. зачем {}
2. зачем n>3 ?
3. зачем i от 2
[ ошибка ], перебором такое не решить.
Первые шесть чисел:
16 — [2, 4, 8]
81 — [3, 9, 27]
625 — [5, 25, 125]
2401 — [7, 49, 343]
14641 — [11, 121, 1331]
28561 — [13, 169, 2197]
1) вместо того, чтобы делать какие-то микрооптимизации типа преждевременного выхода из цикла, считающего делители, попробуй просто сделать нормальную функцию, считающую количество делителей произвольного числа, но чтобы она работала за O(sqrt(n)), а не за O(n), как у тебя
2) последнее из этих ста чисел будет порядка 10^10, на питоне оно будет искаться до второго пришествия
эта задача решается куда эффективнее, если знать, как вообще должны выглядеть такие числа, а точнее - их разложения на простые множители
подумай, как получить количество делителей числа, зная его разложение (вида p1^k1*...*pn^kn, где p1..pn - простые числа)
Жертва ЕГЭ что ль? Как ты мне без этого роутер чинить будешь после своей шараги? Сам