C /查找190! (阶乘)的C语言编程 [英] C / Find 190! (factorial) in c programming
本文介绍了C /查找190! (阶乘)的C语言编程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图找到 190 <!/ code>在
C
。
我定义我的变量为long double,但我看到它计算(正确地)仅172!
I define my variable to long double, but I see that it calculate (correctly) only to 172!:
在这之后,我得到了#INF00000
...`
After that, I got #INF00000
...`
有什么办法呢?
推荐答案
这真的只是code几行来实现足够一个BIGINT实现计算阶乘。这里是code,打印前200的阶乘。
It's really just a few lines of code to implement enough of a bigint implementation to compute factorials. Here's code that prints the first 200 factorials.
#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语言编程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文