再来一种求大数阶乘的方法
发布时间:2020-12-14 03:55:25 所属栏目:大数据 来源:网络整理
导读:? ?过多的我就不说了,直接看看代码: java版的: /** * */package Factorial;/** * @author 牟尼(昵称) * @blog:http://blog.csdn.net/u012027907 * */public class Factorial {/* * 大数阶乘计算类 *//* * 分析:大数阶乘用数组来存储,如5的阶乘可存在
? ?过多的我就不说了,直接看看代码: java版的: /** * */ package Factorial; /** * @author 牟尼(昵称) * @blog:http://blog.csdn.net/u012027907 * */ public class Factorial { /* * 大数阶乘计算类 */ /* * 分析:大数阶乘用数组来存储,如5的阶乘可存在数组cal[]中,表示为 * 0 1 2 3 *[3][0][2][7] *个位存阶乘的位数 *要求5的阶乘,则要求得4!的结果,一直要求的1!的结果为1; *所以使用循环即可 */ /* * 大数阶乘计算 */ public String fac(int num){ String result; //最终结果的字符串 int max; //阶乘的位数 double sum = 0; for(int i = 2; i <=num; i++){//计算阶乘的位数 sum += Math.log10(i); } max = (int)sum +1; int cal[] = new int[max+1];//开辟空间 for(int j = 1; j <= max; j++) cal[j] = 0; cal[0] = max; //cal[0]存储阶乘的位数 cal[1] = 1; int g = 0;//进位 for(int k = 2; k <= num; k++){//从2乘到num g = 0; for(int i =1; i <=max;i++){//计算每个k与数组相乘的结果 cal[i] = cal[i]*k + g; g = cal[i]/10; cal[i] = cal[i]%10; } } result = ""; for(int i = max; i > 0; i--)//将整型数组转为字符串 result += cal[i]; return result; } }运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |