function is_prime(num) if num == 2 || num == 3 return true end if num < 2 || num % 2 == 0 return false end if num < 9 return true end if num % 3 == 0 return false end r = trunc(Int, sqrt(num)) f = 5 while f <= r if num % f == 0 return false end if num % (f+2) == 0 return false end f += 6; end return true end function is_gaussian_prime(num) a = real(num) b = imag(num) if a == 0 b = abs(b) return is_prime(b) && b % 4 == 3 elseif b == 0 a = abs(a) return is_prime(a) && a % 4 == 3 end return is_prime(a^2 + b^2) end b = -1 - 1im numInComplexBase = [complex(0)] # Check the first x numbers in the complex base x = 10000 for index = 2:x # Row index of the binary tree constructed from the values of numInComplexBase row = ndigits(index - 1, base = 2) - 1 leadingValue = b^row theRest = numInComplexBase[index - 2^row] number = leadingValue + theRest push!(numInComplexBase, number) if is_gaussian_prime(number) println(index - 1) end end