My function that gets the prime factors of a number is broken for big numbers

the function
function PrimeFactors(Number)
	local Factors = {}
	local AllFactors = {}
	local FactorCount = {}
	local Factor = 2
	local Sign = math.sign(Number)
	
	Number = math.abs(Number)

	local function AddCount(Number)
		if FactorCount[Number] then
			FactorCount[Number] += 1
		else
			FactorCount[Number] = 1
			table.insert(AllFactors, Number)
		end
	end

	while Factor^2 <= Number do
		while Number % Factor == 0 and Number > Factor do
			table.insert(Factors, Sign * Factor)
			AddCount(Sign * Factor)

			Number /= Factor
		end

		Factor += (Factor == 2 and 1 or 2)
	end

	table.insert(Factors, Sign * Number)
	AddCount(Sign * Number)

	return Factors, AllFactors, FactorCount
end

ok so the function works very well, but I do have a slight problem
when I put in 10^22 it will output with this
image
ignore the other two tables, I showed the most important one
the key is the prime factor and the value is the number of times it shows up

now look at 10^23
image
it SHOULD be 23 2’s and 23 5’s or {[2] = 23, [5] = 23}, instead it shows prime numbers that are incorrect

can I have help on this?
thanks

so I know why this doesn’t work, I almost have it fixed

I am probably going to make this the solution unless something happens