Münchausen Zahlen

Dieses Posting ist furchtbar inspiriert durch einen Eintrag von diesem Blog: https://zach.se/munchausen-numbers-and-how-to-find-them/

Wer mehr zu den Münchhausen-Zahlen wissen will, findet es genauer hier beschrieben: https://de.wikipedia.org/wiki/M%C3%BCnchhausen-Zahl

Kurz gesagt: 3^3 + 4^4 + 3^3 + 5^5 = 3435

In F# schreibt man das so, Zweck der Übung ist ja, das ich mich gerade ein wenig in F# reinschnuppere:

let specialpown (i:int64) =
    match i with
    | 0L -> 0L
    | _ -> pown i (int i)
    
let digits (number:int64) = 
    (string) number |> Seq.map(fun i -> ( (int64) ((int i) % 48) ) )

let isMunchhausen number =
    digits number |> Seq.map (fun i -> specialpown i) |> Seq.sum = number 

digits 1234L |> Seq.toList
isMunchhausen 3435L

seq { 1L..500000000L } |> Seq.filter isMunchhausen |> Seq.toList

F# interactive zeigt dann folgendes in der Konsole:

val specialpown : i:int64 -> int64
val digits : number:int64 -> seq<int64>
val isMunchhausen : number:int64 -> bool
val it : int64 list = [1L; 3435L; 438579088L]

Ja, und die einzigen (bisher) bekannten Münchhausenzahlen sind diese 3:

  • 1
  • 3.435
  • 438.579.088