public static void factor(int m)
{
int[] A = {1};
for(int i = 1; i < m; i++)
{
A = helper(A, i+1);
}
for(int i = A.length - 1; i >= 0; i--)
{
System.out.print(A[i]);
}
}
public static int[] helper(int[] s, int a)//计算一个数组s乘以m的值,比如120 * 6的值,s为[0, 2, 1],m为6
{
int i,temp = 0;
int[] arr = new int[(s[s.length - 1] * a + "").length() - 1 + s.length];//本次计算的结果长度
for(i = 0; i < s.length; i++)
{
arr[i] = (s[i] * a + temp) % 10;//加上前一次的十进位数
if(s[i] * a + temp >= 10)
temp = (s[i] * a + temp) / 10;
else
temp = 0;
}
if(temp != 0)//计算出最高位的数超出一位,要进行增加位数
{
for(int j = 0; j < arr.length - s.length; j++)//本次计算数比前次多的位数
{
arr[i+j]=temp % 10;//把多出的其中一位数存放在新数组中,最后返回至result[]中,i代表目前数组的最高数
if(temp >= 10)
temp /= 10;//放在本循环的j++循环止中进行
else
temp = 0;
}
}
return arr;
}
添加回答
举报
0/150
提交
取消