projecteuler3...または、newLISP で素因数分解するには

 3回目の projecteuler は、newLISP には簡単な問題。
 というのも、問題3は 600851475143 を素因数分解して、最大の素数を求めるというもの。
 例題の 13195 を素因数分解すると 5, 7, 13, 29 が得られます。
 これを newLISP でやると、

> (factor 13195)
(5 7 13 29)
> 

 組込関数 factor は引数の整数を素因数分解するという、この問題のためにあるような関数!しかも、600851475143 は

> (bits 600851475143)
"1000101111100101100010011110101011000111"
> (length (bits 600851475143))
40
> 

 高々40ビット、64ビット整数の newLISP の敵ではありません(笑)。関数 bits も newLISP 組込で、引数の整数を二進数の文字列に変換してくれる便利な関数です。
 従って、問題3の解答は、

> (factor 600851475143)
(71 839 1471 6857)
> ((factor 600851475143) -1)
6857
> 

 となります。

 以上、如何でしょうか?

広告

No comments yet

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。