FSharp

F# で素数判定 (Miller-Rabin)

Miller-Rabin 素数判定法は、与えられた奇数が素数か否かを確率的に判定する手法。 合成数を間違って素数と判定してしまう可能性はあるが、素数を見逃すことはない。 非常に大きい数が素数かどうかを単発で判定することを高速に行える(連続して判定したい場…

F# で汎用の関数(汎用のリテラル)を書く

F# の整数は int(32ビット整数), int64(64ビット整数), bigint(多倍長整数) があって、もちろんそれぞれ型が違う。 ベキ乗とか階乗とか、どの整数型でも同じことをしたいだけでも、普通に書いたらそれぞれ実装しないといけない。 ところで F# には自動汎化と…