这是二元法的部分代码,其他代码已经发给你了。
unsigned power(unsigned a,unsigned b,unsigned long c) /*二元法*/
{
unsigned long z=1,t=a,i=0,j,p,s,q,data[3000]={0};
do /*把b转为二进制形式*/
{
j=b%2;
data=j;
b/=2;
i++;
}while(b);
s=i;
for(p=0;p<s;p++)/*二进制位倒序排列*/
data[p]=data[s-1-p];
for(q=0;q<s;q++)
{
if (data[p]==1)/*若第p位为1进行模乘运算*/
z=(z*t)%c;
t=(t*t)%c;/*模平方运算*/
}
return z;
}