2009年11月16日

1987を約数として持つ1と0で構成される数

某所で見た「たけしのコマネチ大学数学科」の問題。
次の条件を双方とも満たす整数が存在することを証明しなさい。
1.1987を約数として持つ
2.十進法表記で、0と1だけ登場する

例によってコマ大方式でとにかく(PCで)やってみる

let inline ret() = (# "ret" #)

type System.Int32 with
    member n.toString() = n.ToString()
    member n.toString(radix:int) = 
        let table = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        if n >= radix then
            (n / radix).toString(radix) ^ string table.[n % radix]
        else
            string table.[n]

(*
次の条件を双方とも満たす整数が存在することを証明しなさい。 
1.1987を約数として持つ 
2.十進法表記で、0と1だけ登場する 
*)
let main() = 
  for i=1 to System.Int32.MaxValue do
    let v = Math.BigInt.Parse <| i.toString(2)
    if v % 1987I = Math.BigInt.Zero then
       printfn "%A" v
       ret()

do main()
//result
//101000110111I

Posted by BLUEPIXY at 19:56│Comments(0)TrackBack(0)F# |

クリップコメント

トラックバックURL


pre表示(Firefox)

コメントする

名前
URL
 
  絵文字