29 lines
930 B
Text
29 lines
930 B
Text
yellowstone(n) = {
|
|
my(a=3, o=2, u=[]);
|
|
if(n<3, return(n)); \\ Base case: return n if it is less than 3
|
|
print1("1, 2"); \\ Print initial values
|
|
|
|
for(i = 4, n, \\ Iterate from 4 to n
|
|
print1(", "a); \\ Print current value of a
|
|
u = setunion(u, Set(a)); \\ Add a to the set u
|
|
|
|
\\ Remove consecutive elements from u
|
|
while(#u > 1 && u[2] == u[1] + 1,
|
|
u = vecextract(u, "^1")
|
|
);
|
|
|
|
\\ Find next value of a
|
|
for(k = u[1] + 1, 1e10,
|
|
if(gcd(k, o) <= 1, next); \\ Skip if gcd(k, o) is greater than 1
|
|
if(setsearch(u, k), next); \\ Skip if k is in set u
|
|
if(gcd(k, a) != 1, next); \\ Skip if gcd(k, a) is not 1
|
|
o = a; \\ Update o to current a
|
|
a = k; \\ Update a to k
|
|
break
|
|
)
|
|
);
|
|
|
|
a \\ Return the final value of a
|
|
}
|
|
|
|
yellowstone(20); \\ Call the function with n = 20
|