一、实验目的:
编程实现乘方运算
二、实验过程:
1.首先理解性质:
如果a ≡b(mod n),c ≡d(mod n),那么ac ≡bd(mod n)。
2.运用二进制例如7=0111,11^7=(11^1)*(11^2)*(11^4),以及
两个公式解决乘方运算
3.实验首先定义长整型变量a,b,c,接着定义mod函数实现
运用while循环将b转化为二进制,如果b最后一位为1,长整型变量m为a % n,a = a * a % n进行取模运算,b向左移动一位,一致循环直到b移动到0,结束循环,此时m的值即为结果。最后输入a,b,c并调用mod函数。
三、实验代码及结果:
(1)实验代码:
#include<iostream>
using namespace std;
typedef long long LL;
LL a, b, n;//定义全局变量a, b, n
//定义mod函数实现 a^b mod n
void mod() {
LL m=1;
while(b) {//将b转化为二进制
if (b % 2 == 1)//如果二进制b最后一位为1
{
m = m * a % n;//取模运算
}
b>>=1;//b向左移动一位
a = a * a % n;//取模运算
}
cout << m << endl;//输出m即为a^b mod n的值
}
int main() {
cout << "计算 a^b mod n,依次输入a,b,n(中间用空格隔开):";
cin >> a >> b >> n;//输入a,b,c
mod();//调用函数mod
}
(2)实验结果: