例:158974589214758962147852。
这个问题我已经苦思冥想了一段时间了。
可能的方法是什么?
什么是最佳实践?

最佳答案

这是个好问题。。。
您可以使用OpennSsl BIGNUM。
这是一个简单的父亲的例子。

#include <stdio.h>
#include <openssl/bn.h>

int main(int argc, char **argv)
{
    BIGNUM *fat;
    BN_ULONG a, f;
    char *resp;
    int i;

    fat = BN_new();

    for (i = 1; i < argc; i++) {

        f = atoll(argv[i]);

        BN_dec2bn(&fat, "1");
        for (a = 2; a <= f; a++) {
            BN_mul_word(fat, a);
        }

        resp = BN_bn2dec(fat);

        printf("Fatorial of %s = %s\n", argv[i], resp);
    }
    return 0;
 }

我发现了一个更好的例子:
#include <stdio.h>
#include <openssl/bn.h>

int main(int argc, char **argv)
{
    BIGNUM *fat;
    char *resp = NULL;

    fat = BN_new();

    BN_generate_prime(fat, 80, 1, NULL, NULL, NULL, NULL);

    resp = BN_bn2dec(fat);

    printf("Big Random Value: %s\n", resp);

}

;)

关于c - 生成长度为25的随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9009971/

10-12 02:02