Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PrivateGER/d4080b1836f16983312ea4e31c1cef3c to your computer and use it in GitHub Desktop.
Save PrivateGER/d4080b1836f16983312ea4e31c1cef3c to your computer and use it in GitHub Desktop.
Erlang Prime Generator
defmodule M do
require Integer
import :math, only: [sqrt: 1]
def main do
IO.puts("Generating large primes...")
IO.puts "Nummer: #{generate_large_number()}"
IO.puts "Nummer: #{generate_large_number()}"
check_if_prime(13)
for n <- 1..1000 do
spawn(M, :prime_check_and_stdout, [])
end
end
def prime_check_and_stdout() do
number = generate_large_number()
if(is_number_odd(number)) do
is_prime = check_if_prime number
#IO.puts number
if is_prime do
IO.puts("#{number} is prime!!!")
end
end
end
def generate_large_number do
Enum.random(999999999..99999999999999999)
end
def is_number_below_threshold(number, threshold) do
number < threshold
end
def is_number_odd(number) do
rem(number, 2) !== 0
end
def check_if_prime_using_bruteforce(number, n, upTo) do
cond do
rem(number, n) == 0 -> false
n < upTo -> check_if_prime_using_bruteforce(number, n + 1, upTo)
n >= upTo -> true
true -> IO.puts "What? n: #{n}, number: #{number}, upTo: #{upTo}"
end
end
def check_if_prime(number) do
!is_number_below_threshold(number, 2) && is_number_odd(number) && check_if_prime_using_bruteforce(number, 2, trunc(sqrt number))
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment