我做了一个生成素因子的方法。无论我推什么合数,它都会给出主要因素。但是,如果我将质数推入其中,它将不会返回1
,而数字本身也不会返回。相反,它会返回1
一个比推入方法中的数字小的素数。
我决定推一个if
声明,如果推入的数字被证明是素数,它将缩短流程。这是代码:
def get_prime_factors(number)
prime_factors = []
i = 0
primes = primes_gen(number)
if primes.include?(number)
return "Already a prime!"
end
original_number = number
while primes[i] <= original_number / 2
if number % primes[i] == 0
prime_factors << primes[i]
number = number / primes[i]
else
i = i + 1
end
if number == 1
return prime_factors
end
end
end
我喂给101
方法和方法返回nil
。此方法调用该primes_gen
方法,该方法返回一个包含所有小于输入值的素数的数组。这里是:
def primes_gen(limit)
primes = []
i = 0
while i <= limit
primes << i if isprime?(i)
i = i + 1
end
primes.delete(0)
primes.delete(1)
return primes
end
我知道应该有一个更巧妙的方法来解决这个问题。如果有人想为我推荐一个探索的方向,我将不胜感激。
编辑:将 primes_gen() 方法的第 4 行更改为包含 <= 运算符而不是 < 运算符。