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;
}
}
JAVA數據結構課後習題——2的100次方(mod5)是多少?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.