大数的乘法(寻找因子100)

时间:2015-03-01 05:22:33

标签: java arrays multiplication

我想找到100的价值!由于任何数据类型都不支持这个数字范围,我使用数组来查找结果

我的程序的逻辑是

for(int i=1;i<=100;i++)
    {
        carry=0;
        for(int j=799;j>=0;j--)
        {
            ar[j]=ar[j]+carry;
            ar[j]=ar[j]*i;
            carry=ar[j]/10;
            ar[j]=ar[j]%10;
        }
    }

这里我认为最大数字:数字是800(在数组0到799中)。

但是当我像这样打印结果数组时

    int flag=0;
    for(int i=0;i<800;i++)
    {
        if(ar[i]==0&&flag==0)
            ;
        else
        {
            System.out.print(ar[i]);
            flag=1;
        }
    }

它什么都没有显示

我可以知道我哪里出错吗?

2 个答案:

答案 0 :(得分:2)

很可能你忘了

ar[799] = 1;

在使用乘法开始循环之前:使用1初始化产品。

但乘法循环也不正确:

 for(int j=799;j>=0;j--){
        ar[j]=ar[j]*i;
        ar[j]=ar[j]+carry;
        carry=ar[j]/10;
        ar[j]=ar[j]%10;
 }

在乘以下一个数字后,必须添加

答案 1 :(得分:-1)

BigInteger是一种内置的Java类型,您可以直接使用它。