# 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