⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factorialtest.java

📁 Java程序设计培训教程2
💻 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 + -