アクサンの場合

Python3初心者が段々上達するログ

Python3で素因数分解する

素因数分解をライブラリで行う

from sympy.ntheory import factorint

これが正体. 詳細は,

Number Theory — SymPy 1.0 documentation

動作例

In [1]: from sympy.ntheory import factorint

In [2]: factorint(100)
Out[2]: {2: 2, 5: 2}

はい簡単.

実行時間について

In [7]: %time factorint(131)
CPU times: user 55 µs, sys: 4 µs, total: 59 µs
Wall time: 65.8 µs
Out[7]: {131: 1}

適当にキーボードを叩いてみて.

In [8]: %time factorint(127128574306)
CPU times: user 581 µs, sys: 0 ns, total: 581 µs
Wall time: 565 µs
Out[8]: {2: 1, 63564287153: 1}

まだいける.

In [9]: %time factorint(475646893209485734869943817574386974835048976415)
CPU times: user 5min 4s, sys: 204 ms, total: 5min 4s
Wall time: 5min 4s
Out[9]: 
{5: 1,
 151: 1,
 479: 1,
 1024775561: 1,
 1555754843799829: 1,
 824958834555644183: 1}

時間かかる. もうやめておこう.

しっかりと素因数分解してくれるので使えるやつですね.