excel算乘法
如果是两个数字相乘,最简单的方法是将这两个数字放在A1和B1,在其它单元格输入
=A1*B1
如果是很多数据相乘,比如放在以A1为左上角,D4为右下角的区域内共16个数据,可以直接输入
=PRODUCT(A1:D4)
由于阶乘运算的增长速度特别快(比2^n的增长速度快),对于较小整数的阶乘运算采用简单的递规算法可以实现,但是对于大整数的乘法(比如1000!),则传统的递规算法就失去了作用。由于本人的水平不高,用下列拙劣的方式实现,请高人多多指教。具体如下:定义一个很长的数组,用数组的每一项表示计算结果的每一位。例如,7!=5040,a[1000],则a[0]=0,a[1]=4,a[2]=0,a[3]=5。
程序源代码:
/**
*计算大数的阶乘,算法的主要思想就是将计算结果的每一位用数组的一位来表示:如要计算5!,那么首先将
*(1) a[0]=1,然后a[0]=a[0]*2,a[0]=2,
*(2) a[0]=a[0]*3,a[0]=6
*(3) a[0]=a[0]*4,a[0]=24,此时a[1]=2,a[0]=4
*/
public class Factorial
{
static int a[] = new int [10000]
static void factorial(int n)
{
for(int i=2i<a.lengthi++)
a[i] = 0//将数组元素初始化
a[0] = 1//用数组的一项存放计算结果的位数
a[1] = 1//将第一项赋值为一
for(int j= 2j <= nj++)
{
int i=1
int c = 0//c表示向高位的进位
for(i <= a[0]i++)
{
a[i] = a[i] * j + c//将来自低位的计算结果和本位的结果相加
c = a[i] / 10
a[i] = a[i] % 10
}
for(c != 0i++)
{
a[i] = c%10
c = c / 10
}
a[0] = i - 1
}
}
public static void main(String[] args)
{
String num = args[0]
int count = 0
int n = Integer.parseInt(num)
f(n)
for(int i= a[0]i>0i--)
{
count++
System.out.print(/*"a[" + i + "]=" + */a[i]/* + " "*/)
}
System.out.println("\n"+count)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)