mpAdd 多倍長整数同士の加算
void mpAdd(int *ret, int *a, int *b);
ret (出力)多倍長整数同士の加算の結果(a + b) a, b (入力)多倍長整数
なし
#define N 10000 void mpAdd(int *ret, int *a, int *b) { int i; int lr, la, lb; int *rr; int x; la = *a; lb = *b; lr = (la >= lb) ? la : lb; rr = ret; x = 0; for (i = 1; i <= lr; i++) { if (i <= la) x += *++a; if (i <= lb) x += *++b; if (x < N) { *++rr = x; x = 0; } else { *++rr = x - N; x = 1; } } *++rr = x; *ret = lr + x; }