gpt4 book ai didi

C/找到190! C 编程中的(阶乘)

转载 作者:太空狗 更新时间:2023-10-29 15:55:07 25 4
gpt4 key购买 nike

我试图在 C 中找到 190!

我将我的变量定义为 long double,但我看到它仅(正确地)计算到 172!:

在那之后,我得到了 #INF00000...`

有什么办法吗?

最佳答案

实际上只需几行代码即可实现足够的 bigint 实现来计算阶乘。下面是打印前 200 个阶乘的代码。

#include <stdio.h>

int mult(int n, size_t size, unsigned char *data) {
int carry = 0;
for (int i = 0; i < size; i++) {
int result = data[i] * n + carry;
data[i] = result % 100;
carry = (result - data[i]) / 100;
}
return carry != 0;
}

void print(size_t size, unsigned char *data) {
int first = 1;
for (int i = 0; i < size; i++) {
int d = data[size - i - 1];
if (first && d == 0) continue;
printf("%0*d", first && d < 10 ? 1 : 2, d);
first = 0;
}
}

int main(int argc, char*argv[]) {
for (int fact = 1; fact <= 200; fact++) {
unsigned char data[1000] = {1};
for (int i = 1; i <= fact; i++) {
if (mult(i, sizeof(data), data)) {
return 1;
}
}
printf("%d! = ", fact);
print(sizeof(data), data);
printf("\n");
}
return 0;
}

关于C/找到190! C 编程中的(阶乘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19744538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com