şükela:  tümü | bugün
5 entry daha
  • int m = 754974721, n, t[1 << 22], a, *p, i, e = 1 << 22, j, s, b, c, u;
    f (d)
    {
    for (s = 1 << 23; s; s /= 2, d = d * 1ll * d % m)
    if (s < n)
    for (p = t; p < t + n; p += s)
    for (i = s, c = 1; i; i--)
    b = *p + p[s], p[s] = (m + *p - p[s]) *
    1ll * c % m, *p++ = b % m, c = c * 1ll * d % m;
    for (j = 0; i < n - 1;)
    {
    for (s = n / 2; !((j ^= s) & s); s /= 2);
    if (++i < j)
    a = t[i], t[i] = t[j], t[j] = a;
    }
    }

    main ()
    {
    *t = 2;
    u = n = 1;
    while (e /= 2)
    {
    n *= 2;
    u = u * 1ll * (m + 1) / 2 % m;
    f (362);
    for (p = t; p < t + n;)
    *p++ = (*p * 1ll ** p % m) * u % m;
    f (415027540);
    for (a = 0, p = t; p < t + n;)
    a += (6972593 & e ? 2 : 1) ** p, *p++ = a % 10, a /= 10;
    }
    while (!*--p);
    t[0]--;
    while (p >= t)
    printf ("%d", *p--);
    }

    şeklinde* bir c programı ile deli büyük bir asal sayı elde edebilirsiniz

    not: kodun adam gibi halini http://www.no.ioccc.org/2000/bellard.c adresinden download edebilirsiniz.
43 entry daha