結果
問題 | No.1737 One to N |
ユーザー |
👑 |
提出日時 | 2022-01-18 02:24:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 38 ms / 2,000 ms |
コード長 | 1,251 bytes |
コンパイル時間 | 349 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 52,736 KB |
最終ジャッジ日時 | 2024-11-23 13:09:43 |
合計ジャッジ時間 | 2,847 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
from math import gcddef isprime(n):if n <= 1:return Falseelif n == 2:return Trueelif n % 2 == 0:return FalseA = [2, 325, 9375, 28178, 450775, 9780504, 1795265022]s = 0d = n - 1while d % 2 == 0:s += 1d >>= 1for a in A:if a % n == 0:return Truex = pow(a, d, n)if x != 1:for t in range(s):if x == n - 1:breakx = x * x % nelse:return Falsereturn Truedef pollard(n):if n % 2 == 0:return 2if isprime(n):return nf = lambda x:(x * x + 1) % nstep = 0while 1:step += 1x = stepy = f(x)while 1:p = gcd(y - x + n, n)if p == 0 or p == n:breakif p != 1:return px = f(x)y = f(f(y))def primefact(n):if n == 1:return []p = pollard(n)if p == n:return [p]left = primefact(p)right = primefact(n // p)left += rightreturn sorted(left)n = int(input())print(sum(primefact(n)))