JAVA中可以有两个方法处理这个问题
第一种方法就是BigInteger类,用这个类可以很方便的求出非常大的数.以求100!为例
import java.io.*;
import java.math.BigInteger;
public class calc {
public static void main(String[] args) throws IOException{
BigInteger s = BigInteger.valueOf(1);
for(int i=1;i<=100;i++){
s = s.multiply(BigInteger.valueOf(i));
System.out.println(s);
}
}
}
import java.math.BigInteger;
public class calc {
public static void main(String[] args) throws IOException{
BigInteger s = BigInteger.valueOf(1);
for(int i=1;i<=100;i++){
s = s.multiply(BigInteger.valueOf(i));
System.out.println(s);
}
}
}
第二种方法是,把求的值放在足够大的数组中
import java.util.*;
public class calc2{
public static void main(String[] args) throws Exception{
int[] data = new int[1000];
int num = 1;
data[1] = 1;
System.out.println("用数组解决java大数计算问题");
System.out.println("求一个整数的阶乘,请输入一个整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i=1;i<=n;i++){
for(int j=1;j<=num;j++){
data[j] = data[j] * i;
}
for(int j=1;j<num;j++){
if(data[j] >= 10){
data[j+1]+=data[j]/10;
data[j]=data[j]%10;
}
}
while(data[num]>=10){
num++;
data[num]+=data[num-1]/10;
data[num-1]=data[num-1]%10;
}
}
System.out.print(n+"!=");
for(int t=num;t>=1;t--){
System.out.print(data[t]);
}
}
}
public class calc2{
public static void main(String[] args) throws Exception{
int[] data = new int[1000];
int num = 1;
data[1] = 1;
System.out.println("用数组解决java大数计算问题");
System.out.println("求一个整数的阶乘,请输入一个整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i=1;i<=n;i++){
for(int j=1;j<=num;j++){
data[j] = data[j] * i;
}
for(int j=1;j<num;j++){
if(data[j] >= 10){
data[j+1]+=data[j]/10;
data[j]=data[j]%10;
}
}
while(data[num]>=10){
num++;
data[num]+=data[num-1]/10;
data[num-1]=data[num-1]%10;
}
}
System.out.print(n+"!=");
for(int t=num;t>=1;t--){
System.out.print(data[t]);
}
}
}
相关推荐
Java 数值计算库 数列求和算法、求解方程的根、插值法和近似法、 数值积分、求解微分方程、矩阵运算及其它一些有趣的东西, 比如:大数、素数算法、PI、分形等等
java实现大数相减,在不使用BigInteger工具的前提下实现大数相减
自己写的一个java版大数加、减、乘法计算类,支持正负号及小数点
用java计算大数的阶乘,记得应该可以十秒内算出1000以内阶乘(时间很久了,大概是这样)。理论上是可以算无限大的数的阶乘的。可以作为程序设计实验课的作业。核心算法,没有赔UI。复制粘贴即可运行
java 大数N!计算1000的阶乘没什么问题
大数除法(含模)有时需要进行超多位数的除法,本程序可以不限位数的计算
用java实现的求大数的阶乘 关键是用数组来存储计算结果
利用java进行浮点型大数计算,支持四则运算和指数函数,三角函数,对数函数,双曲函数等运算,精度可调整。例如: MATH a=new MATH("1111.111111111111222222222222*33333333333); MATH b=a.eval("Sin(Pi())...
计算圆周率的java程序 包含大数运算
大数16进制转换为10进制,转换的基本原理是将大数切割开成各个数,按照正常的运算过程,记录进位等
java中虽然有BigInteger(subStr).pow(exponent)可以对一个数进行幂计算,但是由于内存大小的限制,即使内存为2GB,对于幂数在100000以上的计算,结果会溢出,本例利用java数组解决了这个问题。
System.out.println("该程序是计算对于A的模P平方根的计算方法,A和P要求用户输入,其中P必须是素数。"); System.out.println("即求解二次同余式:x^2和A模P(x^2=a(mod p))同余式的解,"); System.out.println(...
加 减 乘 除 开方, Java实现的大数版本, 能用于任意大的数做运算
java练习_大数运算_BigInteger.pdf
本工具能够进行大数的加减乘除四则运算,比如超过long类型的大整数,超过double类型的大浮点数,而且解决了浮点数计算的不准确问题。使用之前,请确保机器已经安装好java环境。运行命令为:java -jar ...
如题如题如题如题如题如题如题如题如题如题如题如题如题如题如题如题如题
数字格式化类与大数处理利用案例轻松学习Java语言PPT学习教案.pptx
采用java编译的大整数程序(超过9位)且转化为字符串打印出,在小数点后可以四舍五入计算,可以加减求绝对值开平方等,不止仅限于intger输入可以字符串输入也可以是一个对象进行输入
java实现的算数表达式计算工具类,支持常用算数运算符的计算,包括min和max计算。
61.原创歌曲分享平台的设计与实现|Springboot+ Mysql+Java+ B/S java期末大作业毕业设计项目管理系统计算机软件工程大数据专业 (可运行源码+数据库+设计文档+lw) 详细设计文档链接:http://t.csdnimg.cn/tx1ib ...