大整数计算问题,求解

貌似掉线
领域专家: 操作系统技术领域
2010-10-13 09:08:29
计算1到20的阶乘和问题,希望大家帮忙指出下列所有错误的地方,然后再说说效率问题。谢谢。

public class J_largeNumber
{
public static void main(String args[])
{
byte n=1,temp;
byte [] result=new byte [30];
byte [] npow1=new byte [30];
byte [] npow2 = new byte [30];

for (byte i=1;n<=20;n++)//计算1至20的阶乘和
{
npow1[0]=(byte)(n%10);
npow1[1]=(byte)(n/10);
while(i<n)//计算1至20的阶乘
{
for(int j=0;j<npow1.length;j++)//计算两个数相乘
{
temp=(byte)(npow1[j]*i);
for(int k=j;0!=temp;k++)//计算每一位相乘
{
npow2[k]+=temp%10;
if (npow2[k]>9)//进位
{
npow2[k+1]++;
npow2[k]-=10;
}
temp/=10;
}
}
for(int j=0;j<npow1.length;j++)//将结果给被乘数
{
npow1[j]=npow2[j];
}
for(int j=0;j<npow2.length;j++)//结果重新赋值为零
{
npow2[j]=0;
}
}
for (int j=0;j<npow1.length;j++)
{
result[j]+=npow1[j];
if (result[j]>9)
{
result[j+1]++;
result[j]-=10;
}
}
}
for(int j=0;j<result.length;j++)
System.out.print(result[j]);
}
}
...全文
158 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xisuchi 2010-10-13
  • 打赏
  • 举报
回复
可以用BigDecimal.举例:求500!
import java.math.BigDecimal;

public class Factorial {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(1);
for (int i = 1; i < 501; i++) {
BigDecimal value = new BigDecimal(i);
result = result.multiply(value);
}
System.out.println("result = " + result);
}
}


BigDecimal的四则运算不能用运算符进行,有自己的方法如下:
public static void bigdecimalmeth(){
BigDecimal bigvalue1 = new BigDecimal(100);
BigDecimal bigvalue2 = new BigDecimal(20);
BigDecimal result= new BigDecimal(0);
//加
result = bigvalue1.add(bigvalue2);
System.out.println("100+20="+result);
//减
result = bigvalue1.subtract(bigvalue2);
System.out.println("100-20="+result);
//乘
result = bigvalue1.multiply(bigvalue2);
System.out.println("100*20="+result);
//除
result = bigvalue1.divide(bigvalue2);
System.out.println("100/20="+result);
}
龙四 2010-10-13
  • 打赏
  • 举报
回复
直接java.lang.BigInteger吧,不是做实验的话也没人去算20!
closewbq 2010-10-13
  • 打赏
  • 举报
回复
内容概要:本文系统研究了基于CNN-SVM的卷积神经网络与支持向量机融合的数据分类预测方法,聚焦其在工业故障识别中的应用,提供了完整的Matlab代码实现。通过CNN提取输入数据的深层空间特征,再由SVM进行高精度分类,充分发挥两者优势,有效提升了故障识别的准确性、鲁棒性与泛化能力。该方法特别适用于处理电力系统、机械设备等领域的高维、非线性、强噪声监测数据,在变压器故障诊断、轴承缺陷识别等场景中具有重要应用价值。文档还整合了机器学习、深度学习、图像处理、路径规划、电力系统优化等多个前沿科研方向的技术资源,配套大量Matlab/Simulink仿真案例与Python代码,全面支持科研复现与工程实践。; 适合人群:具备一定编程基础,熟练掌握Matlab或Python语言,从事电气工程、自动化、人工智能、机械故障诊断等相关领域研究的研发人员及高校研究生; 使用场景及目标:① 实现工业设备的状态监测与多类别故障分类;② 深入理解CNN与SVM融合模型的设计原理与工程实现细节;③ 借助所提供的丰富算法案例开展科研复现、模型优化与系统仿真验证; 阅读建议:建议按照文档目录结构系统化学习,结合百度网盘提供的完整代码资源进行动手实践,重点关注CNN特征提取层与SVM分类器之间的数据接口设计与参数调优策略,同时可延伸学习文中涉及的其他智能算法及其在电力系统、信号处理等领域的交叉应用,全面提升科研创新能力。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧