19 lines
456 B
D
19 lines
456 B
D
import std.stdio, std.algorithm, std.range, std.numeric, queue_usage2;
|
|
|
|
struct SternBrocot {
|
|
private auto sb = GrowableCircularQueue!uint(1, 1);
|
|
enum empty = false;
|
|
@property uint front() pure nothrow @safe @nogc {
|
|
return sb.front;
|
|
}
|
|
uint popFront() pure nothrow @safe {
|
|
sb.push(sb.front + sb[1]);
|
|
sb.push(sb[1]);
|
|
return sb.pop;
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
SternBrocot().drop(50_000_000).front.writeln;
|
|
}
|