Posted to tcl by Cecil Westerhof at Sun Jun 16 11:13:46 GMT 2019view pretty

#!/usr/bin/env tclsh

# For variable names longer as 3 charachters I use braces.
# For example I use: $i, $fd, $arg and ${type}


proc doCalculate {start {end ""}} {
    if {$end == ""} {
        set end ${start}
    }
    set factorial 1
    set n         1
    set power     [set base ${start}]
    giveMsg "Start loop."
    while {True} {
        if {${factorial} > ${power}} {
            giveMsg "${base} -> $n"
            incr base
            if {${base} > $end} {
                break
            }
            set power [expr {${base} ** $n}]
        }
        incr n
        set  power     [expr {${power}     * ${base}}]
        set  factorial [expr {${factorial} * $n}]
    }
}

proc giveMsg {msg} {
    puts "[clock format [clock seconds] -format %H:%M:%S]: $msg"
}


switch ${argc} {
    1 -
    2 {
        doCalculate {*}${argv}
    }
    default {
        puts "Usage: [file tail ${::argv0}] start ?end?"
        exit 1
    }
}

Comments

Posted by CecilWesterhof at Sun Jun 16 11:17:46 GMT 2019 [text] [code]

This is my take on calculating the values for: a(n) = smallest m>0 such that n^m < m! Later I want to implement the log algoritm as suggested by kbk.