?? factorialtest.java
字號:
import java.lang.Math;
public class FactorialTest{
int n;
double factNum;
int[] displayArray;
public static void main(String args[])
{
int numObj;
int arrayNum;
FactorialTest classObj = new FactorialTest();
classObj.setValue(100);
numObj = classObj.getValue();
arrayNum = classObj.getBitNum(numObj);
classObj.init(arrayNum);
classObj.calculate(numObj);
classObj.Print(arrayNum);
}
/*方法setValue用于設置n!中n的值*/
void setValue(int value){
n = value;
}
/*方法getValue用于獲得成員變量n的值*/
int getValue(){
return n;
}
/*方法getBitNum用于獲得n!的位數*/
int getBitNum(int n){
double sum = 1.0;
for(int i = 1;i<=n;i++)
sum += Math.log(i)/Math.log(10);
return (int)sum;
}
/*方法init(int r)用于初始化長度為r的整型數組*/
void init(int r){
displayArray = new int[r];
displayArray[0] = 1;
for(int i = 1;i<r;i++)
displayArray[i] = 0;
}
/*方法calculate(int n)用于計算n!的值*/
void calculate(int n)
{
double bitcount = 1;
int pos = 0;
for(int i = 2;i<=n;i++)
{
double addPlus = 0;
bitcount += Math.log(i)/Math.log(10);
if(displayArray[pos] == 0)
pos = pos+1;
for(int j = pos;j<(int)(bitcount);j++)
{
addPlus += i*displayArray[j];
displayArray[j] = (int)(addPlus%10);
addPlus /= 10;
}
}
}
/*方法Print輸出n!*/
void Print(int n)
{
int bit = 0;
for(int i = n-1;i>=0;i--)
{
if(bit%30==0)
System.out.print("\n第"+(bit/30+1)+"個30位:");
System.out.print(displayArray[i]);
bit = bit+1;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -