Loops/Increment loop index within loop body: Difference between revisions
Content added Content deleted
(Added Wren) |
|||
Line 4,172: | Line 4,172: | ||
i=41 : 49,752,014,150,467 |
i=41 : 49,752,014,150,467 |
||
i=42 : 99,504,028,301,131</pre> |
i=42 : 99,504,028,301,131</pre> |
||
=={{header|Wren}}== |
|||
Although one can (apparently) change the index variable within a ''for'' loop, it does in fact change a local copy of the variable and the iteration is not affected at all. Consequently, the only way to complete this task in Wren is to use a ''while'' loop. |
|||
<lang ecmascript>var isPrime = Fn.new { |n| |
|||
if (n < 2 || !n.isInteger) return false |
|||
if (n%2 == 0) return n == 2 |
|||
if (n%3 == 0) return n == 3 |
|||
var d = 5 |
|||
while (d*d <= n) { |
|||
if (n%d == 0) return false |
|||
d = d + 2 |
|||
if (n%d == 0) return false |
|||
d = d + 4 |
|||
} |
|||
return true |
|||
} |
|||
var rset = Fn.new { |m, n| |
|||
var s = "%(n)" |
|||
var c = s.count |
|||
return (m > c) ? " " * (m - c) + s : s |
|||
} |
|||
var commatize = Fn.new { |n| |
|||
var s = "%(n)" |
|||
var le = s.count |
|||
var i = le - 3 |
|||
while (i >= 1) { |
|||
s = s[0...i] + "," + s[i..-1] |
|||
i = i - 3 |
|||
} |
|||
return s |
|||
} |
|||
var count = 0 |
|||
var i = 42 |
|||
while (count < 42) { |
|||
if (isPrime.call(i)) { |
|||
count = count + 1 |
|||
System.print("%(rset.call(2, count)): %(rset.call(18, commatize.call(i)))") |
|||
i = 2 * i - 1 |
|||
} |
|||
i = i + 1 |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
1: 43 |
|||
2: 89 |
|||
3: 179 |
|||
4: 359 |
|||
5: 719 |
|||
6: 1,439 |
|||
7: 2,879 |
|||
8: 5,779 |
|||
9: 11,579 |
|||
10: 23,159 |
|||
11: 46,327 |
|||
12: 92,657 |
|||
13: 185,323 |
|||
14: 370,661 |
|||
15: 741,337 |
|||
16: 1,482,707 |
|||
17: 2,965,421 |
|||
18: 5,930,887 |
|||
19: 11,861,791 |
|||
20: 23,723,597 |
|||
21: 47,447,201 |
|||
22: 94,894,427 |
|||
23: 189,788,857 |
|||
24: 379,577,741 |
|||
25: 759,155,483 |
|||
26: 1,518,310,967 |
|||
27: 3,036,621,941 |
|||
28: 6,073,243,889 |
|||
29: 12,146,487,779 |
|||
30: 24,292,975,649 |
|||
31: 48,585,951,311 |
|||
32: 97,171,902,629 |
|||
33: 194,343,805,267 |
|||
34: 388,687,610,539 |
|||
35: 777,375,221,081 |
|||
36: 1,554,750,442,183 |
|||
37: 3,109,500,884,389 |
|||
38: 6,219,001,768,781 |
|||
39: 12,438,003,537,571 |
|||
40: 24,876,007,075,181 |
|||
41: 49,752,014,150,467 |
|||
42: 99,504,028,301,131 |
|||
</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |