Вопрос Python помогите пожалуйста

Регистрация
23 Ноя 2013
Сообщения
69
Репутация
-3
Спасибо
0
Монет
0
Написал программу, она вычисляет, но только первых 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])

29174146_2e957e2386b5f626fec7356353d6ddfb_240x240.jpg
29174146_a7c459ad564512aeb6d42cad346317bf_240x240.jpg
 
Жертва ЕГЭ что ль? Как ты мне без этого роутер чинить будешь после своей шараги? Сам
 
Ровно 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
 
[ ошибка ], перебором такое не решить. Первые шесть чисел: 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 - простые числа)
 
Назад
Сверху