package Algorithm;public class Algorithm_modTest {public static void main(String[] args){modProcess mp = new modProcess(2,100,5);mp.findModProcess();mp.getResult();}}class modProcess{int baseNumber;int exponent;int modNumber;int minExponent;int modResult;modProcess(int b,int e,int m){this.baseNumber = b;this.exponent = e;this.modNumber = m;this.minExponent =1;this.modResult = 0;}public void findModProcess(){if(this.exponent<this.modNumber){this.modResult = getExponentValue(this.baseNumber, this.exponent)%this.modNumber;}else {this.minExponent = findMinExponent();//找到最小的指數int remainExponent = this.exponent;while((remainExponent>=this.minExponent)){remainExponent = remainExponent - this.minExponent;}int remainNumber = getExponentValue(this.baseNumber, remainExponent);this.modResult = remainNumber%this.modNumber;}}public int findMinExponent()//尋找最小的指數{boolean b = true;int sum = this.baseNumber;int minCount=1;while(b){if((sum-1)%(this.modNumber)==0){b = false;}else{sum = sum*this.baseNumber;minCount++;}}return minCount;}public void getResult()//結果處理{System.out.println("modResult: "+this.modResult);}public int getExponentValue(int base,int e)//擷取整數指數的值{int result=1;for(int i=0;i<e;i++){result = result*base;}return result;}}