Как функция может вернуть, если число является фактором другого? - PullRequest
0 голосов
/ 22 мая 2019

Я пишу функцию для Python 3.7.3, которая проверяет, является ли число фактором другого числа.

Я попытался исследовать Интернет, чтобы найти представление о том, как написать функцию, которая проверяет достоверность факторизации двух неизвестных действительных чисел. В итоге я наткнулся на разницу между факторингом и делимостью, что меня несколько заинтриговало.

def is_factor(f, n):
    """This function returns if f, a real number, is a factor of another
    real number n."""
    while f * f <= n:
        if f % n == 0:          
            f /= n
            #return True?
        else: f += 1 #return False?

print(is_factor(1, 15))

Функция работает, потому что Python возвращает None, и это все. Я ожидаю, что функция вернет истинное или ложное решение. Там должно быть какая-то логическая ошибка в коде. Любая обратная связь приветствуется.

1 Ответ

1 голос
/ 22 мая 2019

Если вы имеете дело с целыми числами, используйте:

def is_factor(f, n):
    return n%f==0

Если вы имеете дело с действительными числами, приведенный выше код работает, но очень чувствителен к неточности с плавающей запятой. Вместо этого вы можете разделить n на f и посмотреть, вернетесь ли вы n после округления до ближайшего целого числа:

def is_factor(f, n, e):
    return abs(round(n/f)*f-n)<e
...