Square-free integers: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Library name change.) |
(added Tcl) |
||
Line 2,604: | Line 2,604: | ||
Square free numbers between 1...100000: 60794 |
Square free numbers between 1...100000: 60794 |
||
Square free numbers between 1...1000000: 607926</pre> |
Square free numbers between 1...1000000: 607926</pre> |
||
=={{header|Tcl}}== |
|||
<lang Tcl>proc isSquarefree {n} { |
|||
for {set d 2} {($d * $d) <= $n} {set d [expr {($d+1)|1}]} { |
|||
if {0 == ($n % $d)} { |
|||
set n [expr {$n / $d}] |
|||
if {0 == ($n % $d)} { |
|||
return 0 ;# no, just found dup divisor |
|||
} |
|||
} |
|||
} |
|||
return 1 ;# yes, no dup divisor found |
|||
} |
|||
proc unComma {str {comma ,}} { |
|||
return [string map [list $comma {}] $str] |
|||
} |
|||
proc showRange {lo hi} { |
|||
puts "Square-free integers in range $lo..$hi are:" |
|||
set lo [unComma $lo] |
|||
set hi [unComma $hi] |
|||
set L [string length $hi] |
|||
set perLine 5 |
|||
while {($perLine * 2 * ($L+1)) <= 80} { |
|||
set perLine [expr {$perLine * 2}] |
|||
} |
|||
set k 0 |
|||
for {set n $lo} {$n <= $hi} {incr n} { |
|||
if {[isSquarefree $n]} { |
|||
puts -nonewline " [format %${L}s $n]" |
|||
incr k |
|||
if {$k >= $perLine} { |
|||
puts "" ; set k 0 |
|||
} |
|||
} |
|||
} |
|||
if {$k > 0} { |
|||
puts "" |
|||
} |
|||
} |
|||
proc showCount {lo hi} { |
|||
set rangtxt "$lo..$hi" |
|||
set lo [unComma $lo] |
|||
set hi [unComma $hi] |
|||
set k 0 |
|||
for {set n $lo} {$n <= $hi} {incr n} { |
|||
incr k [isSquarefree $n] |
|||
} |
|||
puts "Counting [format %6s $k] square-free integers in range $rangtxt" |
|||
} |
|||
showRange 1 145 |
|||
showRange 1,000,000,000,000 1,000,000,000,145 |
|||
foreach H {100 1000 10000 100000 1000000} { |
|||
showCount 1 $H |
|||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre>Square-free integers in range 1..145 are: |
|||
1 2 3 5 6 7 10 11 13 14 15 17 19 21 22 23 26 29 30 31 |
|||
33 34 35 37 38 39 41 42 43 46 47 51 53 55 57 58 59 61 62 65 |
|||
66 67 69 70 71 73 74 77 78 79 82 83 85 86 87 89 91 93 94 95 |
|||
97 101 102 103 105 106 107 109 110 111 113 114 115 118 119 122 123 127 129 130 |
|||
131 133 134 137 138 139 141 142 143 145 |
|||
Square-free integers in range 1,000,000,000,000..1,000,000,000,145 are: |
|||
1000000000001 1000000000002 1000000000003 1000000000005 1000000000006 |
|||
1000000000007 1000000000009 1000000000011 1000000000013 1000000000014 |
|||
1000000000015 1000000000018 1000000000019 1000000000021 1000000000022 |
|||
1000000000023 1000000000027 1000000000029 1000000000030 1000000000031 |
|||
1000000000033 1000000000037 1000000000038 1000000000039 1000000000041 |
|||
1000000000042 1000000000043 1000000000045 1000000000046 1000000000047 |
|||
1000000000049 1000000000051 1000000000054 1000000000055 1000000000057 |
|||
1000000000058 1000000000059 1000000000061 1000000000063 1000000000065 |
|||
1000000000066 1000000000067 1000000000069 1000000000070 1000000000073 |
|||
1000000000074 1000000000077 1000000000078 1000000000079 1000000000081 |
|||
1000000000082 1000000000085 1000000000086 1000000000087 1000000000090 |
|||
1000000000091 1000000000093 1000000000094 1000000000095 1000000000097 |
|||
1000000000099 1000000000101 1000000000102 1000000000103 1000000000105 |
|||
1000000000106 1000000000109 1000000000111 1000000000113 1000000000114 |
|||
1000000000115 1000000000117 1000000000118 1000000000119 1000000000121 |
|||
1000000000122 1000000000123 1000000000126 1000000000127 1000000000129 |
|||
1000000000130 1000000000133 1000000000135 1000000000137 1000000000138 |
|||
1000000000139 1000000000141 1000000000142 1000000000145 |
|||
Counting 61 square-free integers in range 1..100 |
|||
Counting 608 square-free integers in range 1..1000 |
|||
Counting 6083 square-free integers in range 1..10000 |
|||
Counting 60794 square-free integers in range 1..100000 |
|||
Counting 607926 square-free integers in range 1..1000000</pre> |
|||
=={{header|Visual Basic .NET}}== |
=={{header|Visual Basic .NET}}== |