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

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;
}