Re: Простые числа
От: cpp Россия http://www.elecard.com
Дата: 05.12.02 05:31
Оценка:
Здравствуйте, falcon17, Вы писали:


F>unsigned long mulrest(unsigned long a,unsigned long b,unsigned long c)

F>{
F> unsigned long A[2], B[2], X[3], x0r, x1r;
F> A[0] = a>>16; //разбиваем числа a b надвое
F> A[1] = a — A[0]*65536;//32768;
F> B[0] = b>>16;
F> B[1] = b — B[0]*65536;//32768;
F> X[0] = A[0]*B[0];
F> X[1] = A[1]*B[0] + A[0]*B[1];
F> X[2] = A[1]*B[1];

F> x0r = (4294967295 % c + 1)%c;

F> x1r = 65536 % c;

F> X[0] = (X[0]%c) * x0r;

F> X[1] = (X[1]%c) * x1r;
F> X[2] = X[2]%c;

F> return (X[0]+X[1]+X[2])%c;

F>}

чего-то ты в этой функции перемудрил
так работеат

unsigned long mulrest(unsigned long a,unsigned long b,unsigned long c)
{
return ((__int64 )a * b) % c;
}
Сергей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.