namespace eval 029 {
puts [time {
set edge 100
set answer 0
for {set i 2} {$ i <= $ edge} {incr i} {
set notpower ($ i) 1
}
# 2 $edge
#
# . .
set count 0
for {set i 2} {$ i <= $ edge} {incr i} {
if {$ notpower ($ i)} {
set j $ i
set j [expr {$ j * $ i}]
set k 1
while {$ j <= $ edge} {
incr k
set notpower ($ j) 0
set j [expr {$ j * $ i}]
}
set power ($ i) $ k
}
}
# 2,3,4,5,...
# 2 1 ,3 1 ,2 2 ,5 1 ,...
# , ,
# .
# , . :
foreach key [array names power] {
if {[array exists used]} {
array unset used
}
for {set i 1} {$ i <= $ power ($ key)} {incr i} {
for {set j 2} {$ j <= $ edge} {incr j} {
set used ([expr {$ i * $ j}]) 1
}
}
incr answer [llength [array names used]]
}
puts $ answer
}]
}
Source: https://habr.com/ru/post/38127/
All Articles