📜 ⬆️ ⬇️

Solution # 29

condition
Working hours:


 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
     }]
 }


The code is distributed under the license CC-NC-BY ( creative commons )

')

Source: https://habr.com/ru/post/38127/


All Articles