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

//求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");//输出结果后停留在输出窗口
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值