//求L^n mod m,设计O(log n)的算法
#include<stdio.h>
#include<stdlib.h>
//返回x的平方
int square(int x)
{
return x*x;
}
// 用递归思想求L的n次方,充分利用计算后的结果,减少重复计算
int exp(int L, int n)
{
if(0 == n)return 1;
if(0 == n%2)return square(exp(L, n/2));
else return L*exp(L, n-1);
}
int main()
{
int L, n, m;
printf("请输入L,n, m: ", &L, &n, &m);
scanf("%d%d%d", &L, &n, &m);
int result = exp(L, n);
printf("L^n mod m的结果为:%d\n", result % m);
system("pause");//输出结果后停留在输出窗口
}
#include<stdio.h>
#include<stdlib.h>
//返回x的平方
int square(int x)
{
return x*x;
}
// 用递归思想求L的n次方,充分利用计算后的结果,减少重复计算
int exp(int L, int n)
{
if(0 == n)return 1;
if(0 == n%2)return square(exp(L, n/2));
else return L*exp(L, n-1);
}
int main()
{
int L, n, m;
printf("请输入L,n, m: ", &L, &n, &m);
scanf("%d%d%d", &L, &n, &m);
int result = exp(L, n);
printf("L^n mod m的结果为:%d\n", result % m);
system("pause");//输出结果后停留在输出窗口
}