Ваша рекурсия проходит х-1, что не даст вам правильного значения.Например: число факторов в 6 не может быть получено из числа факторов в 5.
Я предполагаю, что вы ищете не число простых факторов, а только те факторы, которые соответствуют умножениюиз двух чисел.
Обычно это не требует рекурсии, поэтому вы можете выбрать любой шаблон F (n) = F (n-1).Например, вы можете использовать текущий коэффициент в качестве отправной точки для нахождения следующего:
def NumFactors(N,F=1):
count = 1 if N%F == 0 else 0
if F == N : return count
return count + NumFactors(N,F+1)
Вы также можете оптимизировать его, чтобы подсчитывать два фактора одновременно до квадратного корня из N и значительно уменьшитьколичество рекурсий:
def NumFactors(N,F=1):
count = 1 if N%F == 0 else 0
if N != F : count = count * 2
if F*F >= N : return count
return count + NumFactors(N,F+1)