D言語: 2, 3, 5, 7... のシーケンスを作る
D 言語で、2, 3, 5, 7... のシーケンスを作る方法です。
素数をふるいにかけるとき
- 2 で割り切れるか
- 3, 5, 7... で割り切れるか
を試しますが、これらを分離せずにひとつのシーケンスとして扱えると便利ですね。
import std.experimental.all; void main() { // 有限のサイズ auto a = chain([2], iota(3, 10, 2)); writeln(a); // [2, 3, 5, 7, 9] // 無限のサイズ auto b = chain([2], recurrence!((a, n) => a[n-1] + 2)(3)); writeln(b.take(10)); // [2, 3, 5, 7, 9, 11, 13, 15, 17, 19] }