模重复平方算法怎么算
2023-01-10阅读(409)
问:模重复平方法怎么计算的?那个b1≡b^2(modm)怎么算的?
- 答:MOD用法及意义是:a≡b(modc)的意思是a和b除以c后余数相同读作a与b同余,mod为c例如:amodb=c说明:a除以b余数为c。再比如说2的100次方的个位是什么,可写成2^100≡6。(mod10)特别是进制,用“mod”来代表几进制。modn读作“模n”
问:模重复平方算法的程序
- 答:#include <iostream>
using namespace std;
int mypower(int a, int b)
{
if ( b == 0 )
return 1;
while ( b % 2 == 0 )
{
b = b >> 1;
a *= a;
}
int sum = 1;
while ( b >= 1 )
{
if ( b % 2 == 1 )
{
b -= 1;
sum *= a;
}
else
{
a *= a;
b = b >> 1;
}
}
return sum;
}
int main()
{
for ( int i = 0; i < 12; ++i )
cout << mypower(2,i) << endl;
return 0;
}
问:C/C++中关于模重复平方计算法
- 答:不懂,是不是快速幂乘法呀?
#include <iostream>
using namespace std;
int mypower(int a, int b)
{
if ( b == 0 )
return 1;
while ( b % 2 == 0 )
{
b = b >> 1;
a *= a;
}
int sum = 1;
while ( b >= 1 )
{
if ( b % 2 == 1 )
{
b -= 1;
sum *= a;
}
else
{
a *= a;
b = b >> 1;
}
}
return sum;
}
int main()
{
for ( int i = 0; i < 12; ++i )
cout << mypower(2,i) << endl;
return 0;
}