Jump to content

Loops/Increment loop index within loop body: Difference between revisions

Added Wren
(Added Wren)
Line 4,172:
i=41 : 49,752,014,150,467
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}}==
9,482

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.