求L^n mod m,设计O(log n)的算法

//求L^n mod m,设计O(log n)的算法
#include
#include
//返回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");//输出结果后停留在输出窗口
}


你可能感兴趣的:(数据结构和算法)