Реализация оператора по модулю как функции в C - PullRequest
14 голосов
/ 18 апреля 2010

Как мы можем реализовать оператор по модулю как функцию в C без использования оператора?

Ответы [ 5 ]

37 голосов
/ 18 апреля 2010

Делаем целочисленное деление с последующим умножением и вычитанием.

#include <stdio.h>
int main()
{
  int c=8, m=3, result=c-(c/m*m);
  printf("%d\n", result);
}
9 голосов
/ 18 апреля 2010

Вот, пожалуйста:

a % b = a - (b * int(a/b))
5 голосов
/ 18 апреля 2010

Простой:

Если частное a/b представимо, выражение (a/b)*b + a%b должно равняться a

(стандарт C99, 6.5.5 /6).

5 голосов
/ 18 апреля 2010

Вы можете смоделировать x % y, многократно вычитая y из x и отслеживая результат. На каждой итерации, если результат меньше y, у вас есть остаток, и вы можете просто вернуть его.

0 голосов
/ 01 ноября 2015

Дивиденд / Делитель = Коэффициент

Формула (в Python 3) ниже:

Modolus = Divident - Дивиденд // Divisor * Divisor

Например, если Дивиденд = 5, а Дивизор = 2, тогда

Модуль = 5 - 5 // 2 * 2, который становится 5 - 2 * 2 5 - 4 1 Помните, что // имеет более высокий приоритет, чем -, поэтому 5 // 2 оценивается первым.

...