Python. Остаток от деления

Для выполнения ряда задач необходимо находить остаток деления целого числа на целое число. Например, нахождение последней цифры числа в различных системах счисления, при проверке делимости. В Python для этого служит оператор %.

Для положительных чисел:
n=int(input())       #n=86
d=n%10                #d=6 - последняя цифра числа n в 10 СС
if n%6==0:
    print("Число n делится на 6") 
При нахождении остатка целочисленного деления отрицательно числа на положительное результат Python будет отличаться от ожидаемого. Например, остаток от деления -86 на 10 равен 4. Это соответствует теореме математики: -86=-9*10+4. Остаток не может быть отрицательным числом.

print(-86//10)        #-9
print(-86%10)       #4

Если необходимо найти последнюю цифру отрицательного числа в 10СС, то необходимо находить остаток от деления модуля отрицательно числа на 10:

n=int(input())       #n=-86
d=abs(n)%10       #d=6 - последняя цифра числа n в 10 СС

Если необходимо проверить делимость отрицательного числа, то условие не изменяется, т.к. остаток от деления также будет равен нулю:

n=int(input())       #n=-86
if n%6==0:
    print("Число n делится на 6")
При нахождении остатка целочисленного деления положительного числа на отрицательное результат действия в Python  не совпадает с теоремой математики. Остаток - отрицательное число. Например, в Python 86%10 = -4, вычисляем -9*(-10) - 4 = -90, а не 86. 

print(86//-10)        #-9
print(86%-10)       #-4

При нахождении остатка целочисленного деления отрицательного числа на отрицательное остаток - отрицательное число. Например, в Python -86%(-10) = -4, вычисляем 8*(-10) - 6 = -86. 

print(-86//-10)        #8  
print(-86%-10)       #-6


Будьте внимательны! Прежде чем решать задачу с большими числами, проведите ряд экпериментов в Python и вычислений, сравните результат с условиями задачи и примером (если он приведен в задаче).

Используемые источники

Остаток от деления отрицательных чисел https://yourtutor.info/остаток-от-деления-отрицательных
Арифметика остатков https://mat.1sept.ru/view_article.php?ID=200102102




Комментарии