您的位置:首页 > 编程语言 > Java开发

大数运算之JAVA实现

2018-03-19 22:53 369 查看
由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。大数运算主要有加、减、乘三种方法。

原理

利用数组连续性,将大数每一位上的数字单独取出放入对应的数组格中,然后再对每一位做单独的加减乘运算。形象的说,类似于小学学习加减乘所列的式子。

具体代码如下:

import java.util.Scanner;
public class FACT {
public static void main(String[] args) {
int m;
int data[]=new int[3268];
Scanner scanner = new Scanner(System.in);
m= scanner.nextInt();//输入m的 求m!
m=BigFact(m,data);
System.out.print(data[m--]);
while(m>0)
System.out.printf("%05d",data[m--]);
System.out.println();
scanner.close();
}
static int BigFact(int m,int data[])
{
int i, j, k,index =1;//index为位数
int N=100000;
data[1]=1;//1!=1
for (i=1; i<=m; i++)
{
for (j=1; j<=index; j++)//模拟乘法
data[j]*= i;
for (k=1;k<index; k++)//进位
if (data[k]>=N)
{
data[k+1]+=data[k]/N;
data[k]%=N;
}
while (data[index] >=N)//最高位进位
{
data[index+1] = data[index]/N;
data[index++]%=N;
}
}
return index;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 大数运算