[ 簡単な説明 ]
LINT 型数値を int 型数値で割った剰余を返します。 |
/* smod.c */ #include "longint.h" /* modulus LINT % int */ int smod(LINT a, int n) { LINT t, w; int i, r; if(n == BASE) r = a.num[1]; else if(n > BASE) { t = lset(n); ldivide(a, t, &w); return iset(w); } if(a.len == 0) return 0; for(i = a.len, r = 0; i > 0; i--) r = (r * BASE + a.num[i]) % n; return (a.sign == 0) ? r: - r; } |