Автор | Сообщение |
|
Отправлено: 15.12.21 17:42. Заголовок: Задача 25 (4211)
Написал код, но он работает ооочень долго. Сам код работает правильно - проверял. Вопрос только в том, как его ускорить? PROSTO = [] for i in range(1, 912673, 2): k = 0 for j in range(2, int(i**0.5)+1): if i%j==0: k = 1 break if k == 0: PROSTO.append(i) s = 912673 kn = 0 while kn != 5: s -= 2 s1 = 0 for i in range (3 , s): if (s % i == 0) and ((i not in PROSTO) or (i%2==0)): s1 += i if s1>s: break if s1!=0 and s % s1 == 0: kn += 1 print (s , s1)
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 3095
|
|
Отправлено: 15.12.21 17:43. Заголовок: Оформите, пожалуйста..
Оформите, пожалуйста, программу (см. замечание в желтой рамке вверху).
|
|
|
|
Отправлено: 16.12.21 11:07. Заголовок: в паскале всё работа..
|
|
|
|
Отправлено: 16.12.21 16:29. Заголовок: Зря вы решили собира..
Зря вы решили собирать кучу простых чисел в массив def divisors(x): return {i for d in range(2,int(x**0.5)+1) if x%d==0 for i in (d,x//d)} def prime(x): return all(x%i!=0 for i in range(2, int(x**0.5)+1)) for x in range(912671,1,-2): S = sum(i for i in divisors(x) if not prime(i)) if S>0 and x%S==0: print(x,S)
|
|
|
|