about summary refs log tree commit diff
path: root/codechef/eartseq.py
diff options
context:
space:
mode:
Diffstat (limited to 'codechef/eartseq.py')
-rwxr-xr-xcodechef/eartseq.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/codechef/eartseq.py b/codechef/eartseq.py
new file mode 100755
index 0000000..bb6258b
--- /dev/null
+++ b/codechef/eartseq.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+from math import gcd
+from itertools import cycle, islice
+from sys import stdin
+
+CANDIDATES = cycle(range(2, 30000))
+
+a, b, new = 30011, 30013, {}
+coprimes, result = [a, b], [a * b]
+for _ in range(49998):
+    for i in CANDIDATES:
+        if new.get(b * i, True) and gcd(a, i) == 1 == gcd(b, i):
+            coprimes.append(i)
+            a, b = b, i
+            break
+    new[a * b] = False
+    result.append(a * b)
+
+next(stdin)
+for N in map(int, stdin):
+    N -= 1
+    print(coprimes[N] * 30011, end=' ')
+    print(*islice(result, N))