Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Execute Tcl Online

proc SteinsGCD { u v } {
    #begin with simple cases
    if { $u == $v } { return $u }
    if { $u == 0 } { return $v }
    if { $v == 0 } { return $u } 
    
    #looking for factors of 2, u is even
    if { (~( $u )) & 1 } { 
    #v is odd
    if { $v & 1 } { return [SteinsGCD [expr $u >> 1] $v ] } } 
    #both u and v are even
    if { ((~( $u )) & 1) & ((~( $u )) & 1)} { return [expr [ SteinsGCD [expr $u >> 1] [expr $v >> 1 ] ] <<1]  }
    
    #u is odd, v is even
    if { (~( $v )) & 1 } {
        return [SteinsGCD $u [expr $v >> 1] ]
    } 
    #reduce larger argument
    if {  $u > $v } { return [SteinsGCD  [expr [ expr $u - $v]>>1] $v] }
    
    return [SteinsGCD  [expr [ expr $v - $u] >> 1] $u] 
    
}

puts "First Number\t Second Number\t GCD"
puts "------------\t -------------\t ---"
for { set x 0 } { $x < 100 } { incr x } {
set q [expr int([expr rand() * 100])]
set w [expr int([expr rand() * 100])]
set a [SteinsGCD $q $w]
puts "$q\t\t$w\t\t$a"
}

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.