uint64_t a=0x1234567890ABCDEF;
uint64_t n=0x01FFFFFFFFFFFFFF;
我要进行c=m^2 mod n
但是速度太慢,如何有效地进行运算,尽量避免除法和不必要的乘法,以移位为主,但是同时变量最大只能保存64位的无整形
如何进行有效地平方运算,缩短运算时间,提高运算速度。请高手支招!!
...全文
9348打赏收藏
如何利用移位运算符进行平方和求余运算?请高手帮忙啊!非常感谢!高分求解!
uint64_t a=0x1234567890ABCDEF; uint64_t n=0x01FFFFFFFFFFFFFF; 我要进行c=m^2 mod n 但是速度太慢,如何有效地进行运算,尽量避免除法和不必要的乘法,以移位为主,但是同时变量最大只能保存64位的无整形 如何进行有效地平方运算,缩短运算时间,提高运算速度。请高手支招!!
uint64_t a=0x1234567890ABCDEF;
uint64_t n=0x01FFFFFFFFFFFFFF;
我要进行c=m^2 mod n
但是速度太慢,如何有效地进行运算,尽量避免除法和不必要的乘法,以移位为主,但是同时变量最大只能保存64位的无整形
如何进行有效地平方运算,缩短运算时间,提高运算速度。请高手支招!!
[/Quote]
计算a^n mod k
int powmod(int a, int n, int k)
{
if(n==0) return 1;
int c=powmod(a,n/2,k);
if(b&1) return ((c*c)%k*a)%k;
else return (c*c)%k;
}