同余定理性质:
(1)同一个除数,两数的和(或差)与他们余数的和(或差)同余数。•(a + b) % m = (a % m + b % m) % m
(2)同一个除数,两数的乘积与他们余数的乘积同余。•(a * b) % m = ((a % m) * (b % m)) % m
(3)同一个除数,如果两个整数同余,那么他们的差就一定能被这个数整除。
(4)同一个除数,如果两个整数同余,那么他们的乘方仍然同余。
灵活运用性质,把求一个比较大的数字除以某数的余数问题转化为求一个较小数除以这个数的余数,使复杂的问题变得简单化。
(5)1234 = ((1 * 10 + 2) * 10 + 3) * 10 + 4举例:
#include<math.h>
#include<iostream>
#define Max 10000
using namespace std;
void function(int x, int num, int m)
{
int i, r, a[Max];
for (i = 1; i<=num; i++)
{
r = (int)(pow(x, i)) % m;
a[i] = r;
if (r==1)
{
break;
}
printf(" a[i] r i %d %d %d\n", a[i],r,i);
}
cout << x << "的" << num << "次幂" << "除以" << m << "余数是" << a[num % i] << endl;
}
int main()
{
int x=0;int num=0, m=0;
cout<<"请输入x的num次幂,除数m:";
cin>> x>>num>>m;
function(x, num, m);
return 0;
}