裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Python で素因数分解 --- R の勝ちかな?

2017年11月19日 | ブログラミング

Python で素因数分解

http://my-notes.hatenablog.com/entry/2017/11/19/022246

結果の表示が特殊

sympy がインストールされていない場合は,事前に一度だけ
$ python3 -m pip install sympy

その後,
$ python3
>>> import sympy as sym
>>> sym.factorint(12878)
{2: 1, 47: 1, 137: 1}

>>> sym.factorint(111111111111111111111111111111111111111111111111111111111111111)
{3: 2, 37: 1, 43: 1, 239: 1, 1933: 1, 4649: 1, 10837: 1, 23311: 1, 45613: 1, 333667: 1, 45121231: 1, 10838689: 1, 1921436048294281: 1}

>>> start=time.time();sym.factorint(11111111111111111111111111111111111111111111111111111111111111111111);print(time.time()-start)
{11: 1, 101: 1, 103: 1, 4013: 1, 2071723: 1, 28559389: 1, 1491383821: 1, 5363222357: 1, 21993833369: 1, 2324557465671829: 1}

1.9484901428222656 # 1.9 秒かかりました


R で素因数分解

gmp がインストールされていない場合は,事前に一度だけ
> install.packages("gmp")

gmp を使う前に
> library(gmp)

その後,
> factorize(12878)
Big Integer ('bigz') object of length 3:
[1] 2   47  137

> factorize(as.bigz("111111111111111111111111111111111111111111111111111111111111111"))
Big Integer ('bigz') object of length 14:
 [1] 3                3                37               43               239              1933             4649            
 [8] 10837            23311            45613            333667           45121231         10838689         1921436048294281

> system.time(print(factorize(as.bigz("11111111111111111111111111111111111111111111111111111111111111111111"))))
Big Integer ('bigz') object of length 10:
 [1] 11               101              103              4013             2071723          28559389         1491383821      
 [8] 5363222357       21993833369      2324557465671829

   ユーザ   システム       経過  
      0.03       0.00       0.03 # 0.03秒でした




 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« マス目を回す | トップ | Python で平均値? でも,R ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事