How to find A and B where A and B are prime numbers and A * B = 12349 in Ruby

1 Answer

0 votes
# Function to check if a number is prime
def isPrime(n)  # n: Integer
  if n <= 1
    return false
  end
  if n <= 3
    return true
  end
  if n % 2 == 0 || n % 3 == 0
    return false
  end

  limit = Math.sqrt(n).to_i  # limit: Integer
  i = 5                      # i: Integer

  while i <= limit
    if n % i == 0 || n % (i + 2) == 0
      return false
    end
    i += 6
  end

  return true
end

# Helper class to return a and B together
class Pair
  attr_accessor :a, :b  # a: Integer, b: Integer

  def initialize(a, b)  # a: Integer, b: Integer
    @a = a
    @b= b
  end
end

# Function to find the two prime factors a and b
def findAB(n)  # n: Integer
  limit = Math.sqrt(n).to_i  # limit: Integer

  for i in 2..limit
    if n % i == 0
      j = n / i  # j: Integer
      if isPrime(i) && isPrime(j)
        return Pair.new(i, j)
      end
    end
  end

  return Pair.new(-1, -1)  # No prime factors found
end

def main
  n = 12349  # n: Integer

  result = findAB(n)  # result: Pair

  if result.a != -1
    puts "A = #{result.a}, B = #{result.b}"
  else
    puts "Not found."
  end
end

main



=begin
run:

A = 53, B = 233

=end

 



answered 9 hours ago by avibootz

Related questions

...