Em matemática, o resto da divisão euclidiana é sempre positivo, independentemente do sinal do dividendo ou do divisor. No entanto, este não é o caso da programação.
Em python, o sinal do resto é sempre o sinal do divisor:
print 7 % 3 # 1
print 7 % -3 # -2
print -7 % 3 # 2
print -7 % -3 # -1
Em C ++, até C ++ 11 depende da implementação. Por exemplo, no clang ++ 4.2, o sinal do resto é o sinal do dividendo.
std::cout << 7 % 3 << std::endl; //1
std::cout << 7 % -3 << std::endl; //1
std::cout << -7 % 3 << std::endl; //-1
std::cout << -7 % -3 << std::endl; //-1
C ++ 11 define o restante como sempre positivo, seguindo sua definição matemática.