资源简介
用java计算大数的阶乘,记得应该可以十秒内算出1000以内阶乘(时间很久了,大概是这样)。理论上是可以算无限大的数的阶乘的。可以作为程序设计实验课的作业。核心算法,没有赔UI。复制粘贴即可运行

代码片段和文件信息
public class TestRecursive2 {
public static int N = 1000000000;// 以1000000000为基数
public static int bit = 1; // 记录数的位数 如上面的就有3位(以N为基)
public static int zero = 0; // b是低位乘出来的0000000000的数目
public static int answer = 0;
public static void main(String[] args) {
int[] result = new int[100000000];// 用于存储结果的数组
// ,如s[0]=1s[1]=21s[2]=213s[3]以上都为0,
// 则结果是:213000000021000000001
int num = 1000;// 要计算到的位数
// 附初值,S=1,即result[0]=1以上都为0
for (int i = 1; i < 6; i++) {
result[i] = 0;
}
result[0] = 1;
// 循环,s乘以2、3、4……num
for (int i = 2; i <= num; i++) {
bignum(result i);
}
System.out.println(System.currentTimeMillis());
// 输出结果
for (int i = result.length - 1; i >= 0; i--) {
if(result[i]!=0){
//System.out.print(result[i] + ““);
}
}
System.out.println(System.currentTimeMillis());
}
/*
* bignum
*/
public static void bignum(int[] result int num) {
long p = 0; // p是对每一位乘法中的值加上进位,如34*54*5是203*5的加上进位2是17
long k = 0; // k是一次乘法中的进位,如10进制乘法中,34*54*5的进位是23*5的进位是1 (15/10 = 1)
for (int i = zero; i < bit; i++) {
// 位上为0的不参与计算
p = (long) result[i] * (long) num + k; // 注意:此处必须转化为long型
// System.out.println(“num= “+num);
// System.out.println(“p= “+p);
k = p / N;
result[i] = (int) (p - k * N);
// System.out.println(i + “ “ +result[i]);
}
// 最高位的进位处理
for (k = p / N; k != 0;) {
p = k;
k = p / N;
result[bit++] = (int) (p - k * N);
bit++; // 进一次m加一次
}
// b是低位乘出来的000的数目增加后加1
while (result[zero] == 0) {
zero++;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-01-25 23:36 TestRecursive2\
文件 301 2013-06-20 20:23 TestRecursive2\.classpath
文件 390 2013-06-20 20:23 TestRecursive2\.project
目录 0 2014-01-25 23:36 TestRecursive2\.settings\
文件 598 2013-06-20 20:23 TestRecursive2\.settings\org.eclipse.jdt.core.prefs
目录 0 2014-01-25 23:36 TestRecursive2\bin\
文件 1347 2014-01-08 15:10 TestRecursive2\bin\TestRecursive2.class
目录 0 2014-01-25 23:36 TestRecursive2\src\
文件 1787 2013-06-21 20:24 TestRecursive2\src\TestRecursive2.java
- 上一篇:java随机数生成器
- 下一篇:当当网上书城
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论