1 saniyede 10 milyon basamaklı iki sayıyı çarpmak

entry4 galeri
    2.
  1. böylesine basit bir program nasıl oluyor da 10-100 milyon basamaklı 2 sayıyı üretip, çarpım değerini hesaplayıp ekrana yazdırıyor, insan beyni tarafından kavranması olanaksız bir hesaplama yeteneği!
    #include <stdio.h>
    #include <gmp.h>
    #include <stdlib.h>
    #include <time.h>

    int main() {
    // GMP değişkenlerini tanımla
    mpz_t num1, num2, result;
    mpz_init(num1);
    mpz_init(num2);
    mpz_init(result);

    // Rastgele sayı üretimi için bir durum oluştur
    gmp_randstate_t state;
    gmp_randinit_mt(state); // Mersenne Twister yöntemi
    gmp_randseed_ui(state, time(NULL)); // Zamanı seed olarak kullan

    // 100 basamaklı iki rastgele sayı üret
    mpz_urandomb(num1, state, 10000000 * 3.32); // 3.32 yaklaşık olarak log10(2)'dir
    mpz_urandomb(num2, state, 10000000 * 3.32);

    // iki sayıyı çarp
    mpz_mul(result, num1, num2);

    // Sonuçları yazdır
    gmp_printf("Sayı 1: %Zd\n", num1);
    gmp_printf("Sayı 2: %Zd\n", num2);
    gmp_printf("Çarpım: %Zd\n", result);

    // Belleği temizle
    mpz_clear(num1);
    mpz_clear(num2);
    mpz_clear(result);
    gmp_randclear(state);

    return 0;
    }
    0 ...