Vous êtes sur la page 1sur 1

Chinese_Remainder_Theorem.

java

publicclassChinese_Remainder_Theorem{
publicstaticvoidmain(String[]args){
int[]a={5,20,1};
int[]m={23,28,33};
intanswer=solveuseCRT(a,m);
System.out.println(answer);
for(inti=0;i<m.length;i++){
System.out.println(answer%m[i]a[i]);
}
}
//Thismethodtakesthea,bandminaxb(modm)andreturntheintegerx
//thatsatisfies(0<=x<m).
publicstaticintgetmod(inta,intb,intm){
for(inti=0;i<m;i++){
if((a*ib)%m==0){
returni;
}
}
return1;
}
//Thismethodisusedtosolveasetoffuctionxa[i](modm[i]).Eachtwo
//elementsofm[i]hasNOCOMMONFACTORSotherthan1.
//Itreturnstheintegerxthatsatisfies(0<=x<m)wheremistheproduct
//ofalltheelementinm[i].
publicstaticintsolveuseCRT(int[]a,int[]m){
intmproduct=1;
intresult=0;
for(inti=0;i<m.length;i++){
mproduct*=m[i];
}
for(inti=0;i<m.length;i++){
result+=a[i]*mproduct/m[i]*getmod(mproduct/m[i],1,m[i]);
}
if(result==0){
returnresult;
}
result=result%mproduct;
if(result<0){
result+=mproduct;
}
returnresult;
}
}

Page1

Vous aimerez peut-être aussi