Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
13
Task/Modular-exponentiation/Tcl/modular-exponentiation-1.tcl
Normal file
13
Task/Modular-exponentiation/Tcl/modular-exponentiation-1.tcl
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
package require Tcl 8.5
|
||||
|
||||
# Algorithm from http://introcs.cs.princeton.edu/java/78crypto/ModExp.java.html
|
||||
# but Tcl has arbitrary-width integers and an exponentiation operator, which
|
||||
# helps simplify the code.
|
||||
proc tcl::mathfunc::modexp {a b n} {
|
||||
if {$b == 0} {return 1}
|
||||
set c [expr {modexp($a, $b / 2, $n)**2 % $n}]
|
||||
if {$b & 1} {
|
||||
set c [expr {($c * $a) % $n}]
|
||||
}
|
||||
return $c
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
set a 2988348162058574136915891421498819466320163312926952423791023078876139
|
||||
set b 2351399303373464486466122544523690094744975233415544072992656881240319
|
||||
set n [expr {10**40}]
|
||||
puts [expr {modexp($a,$b,$n)}]
|
||||
10
Task/Modular-exponentiation/Tcl/modular-exponentiation-3.tcl
Normal file
10
Task/Modular-exponentiation/Tcl/modular-exponentiation-3.tcl
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
package require Tcl 8.5
|
||||
proc modexp {a b n} {
|
||||
for {set c 1} {$b} {set a [expr {$a*$a % $n}]} {
|
||||
if {$b & 1} {
|
||||
set c [expr {$c*$a % $n}]
|
||||
}
|
||||
set b [expr {$b >> 1}]
|
||||
}
|
||||
return $c
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
set a 2988348162058574136915891421498819466320163312926952423791023078876139
|
||||
set b 2351399303373464486466122544523690094744975233415544072992656881240319
|
||||
set n [expr {10**40}]
|
||||
puts [modexp $a $b $n]
|
||||
Loading…
Add table
Add a link
Reference in a new issue