Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
31
Task/Almost-prime/Tcl/almost-prime.tcl
Normal file
31
Task/Almost-prime/Tcl/almost-prime.tcl
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
package require Tcl 8.6
|
||||
package require math::numtheory
|
||||
|
||||
proc firstNprimes n {
|
||||
for {set result {};set i 2} {[llength $result] < $n} {incr i} {
|
||||
if {[::math::numtheory::isprime $i]} {
|
||||
lappend result $i
|
||||
}
|
||||
}
|
||||
return $result
|
||||
}
|
||||
|
||||
proc firstN_KalmostPrimes {n k} {
|
||||
set p [firstNprimes $n]
|
||||
set i [lrepeat $k 0]
|
||||
set c {}
|
||||
|
||||
while true {
|
||||
dict set c [::tcl::mathop::* {*}[lmap j $i {lindex $p $j}]] ""
|
||||
for {set x 0} {$x < $k} {incr x} {
|
||||
lset i $x [set xx [expr {([lindex $i $x] + 1) % $n}]]
|
||||
if {$xx} break
|
||||
}
|
||||
if {$x == $k} break
|
||||
}
|
||||
return [lrange [lsort -integer [dict keys $c]] 0 [expr {$n - 1}]]
|
||||
}
|
||||
|
||||
for {set K 1} {$K <= 5} {incr K} {
|
||||
puts "$K => [firstN_KalmostPrimes 10 $K]"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue