编写程序,求n!(n的值要能大于13),其结果用一个不超过64位的十进制数输出。
时间: 2023-04-25 17:04:42 浏览: 143
可以使用高精度计算的方法来求解n!,即将每一位数字存储在一个数组中,然后按照乘法的规则进行计算。具体实现可以参考以下步骤:
1. 定义一个数组a,用于存储n!的每一位数字,数组长度为64位。
2. 初始化a为1,即a[]=1。
3. 从2到n依次遍历每个数字i,对a数组进行乘法运算,即将a数组中的每一位与i相乘,并将结果存储在a数组中。
4. 在每次乘法运算后,需要对a数组进行进位处理,即将每一位上的数字按照十进制规则进行进位。
5. 最后将a数组中的每一位数字按照从高位到低位的顺序输出即可。
以下是一个简单的高精度计算n!的示例代码:
```python
def factorial(n):
a = [] * 64
a[] = 1
for i in range(2, n+1):
carry =
for j in range(64):
a[j] = a[j] * i + carry
carry = a[j] // 10
a[j] %= 10
result = ''
for i in range(63, -1, -1):
if a[i] != :
result = result + str(a[i])
return result
```
该代码使用了一个长度为64的数组a来存储n!的每一位数字,然后依次遍历2到n的每个数字i,对a数组进行乘法运算,并进行进位处理。最后将a数组中的每一位数字按照从高位到低位的顺序输出即可。
需要注意的是,由于Python中整数类型的精度是动态的,可以自动扩展到任意大小,因此可以直接使用Python内置的整数类型来计算n!,无需使用高精度计算。但是如果需要使用其他编程语言来计算n!,则需要使用高精度计算的方法。