一、算法介绍
中国剩余定理又称孙子定理,是中国人在古代数学上的一点智慧果实(finally),总算是在世界数学史上找到了一个位置吧。
下面就把算法的具体过程贴出来:
关于中国剩余定理的内容介绍:
可以看到中国剩余定理就是用来求同余方程组的,前提条件是k个方程的模底数mj两两互素,然后在满足条件的情况下求M序列和M逆序列,最后求出模m的方程组解x。
关于算法步骤:
很清晰!!!
二、代码实现
话说在前头:这里只是针对三个同余方程组,aj和mj存放在一个文件里以换行符隔开,且每一个大数的位数是有限制的。如果你想计算多个同余方程组的话设置一个计数变量k就行了。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include"miracl.h"
int main()
{
int j = 0;
char fileName[100];//存放aj和mj的文件名
FILE *fd = NULL;
miracl *mip = mirsys(5000, 10);
big aj[3], mj[3], Mj[3], Mj_inverse[3], m, x, temp, one;
//大数初始化
m = mirvar(1);
one = mirvar(1);
x = mirvar(0);
temp = mirvar(0);
for (j = 0; j < 3; j++) {
aj[j] = mirvar(