Ejemplo n.º 1
0
int factor(mpz_t x_1, mpz_t x_2, mpz_t d, mpz_t n, mpz_t tmp, mpz_t *factors)
{
    int num_factors = 0;

    while (IS_ONE(n) != 0 && IS_PRIME(n) == 0) {
        /*pollard(x_1, x_2, d, n, 2, 1, MAX_NUMBER_OF_TRIES);*/
        pollard_brent(x_1, x_2, d, n, 2, 3, MAX_NUMBER_OF_TRIES);

        if(FAILED(d)) {
            return 0;
        }

        while (IS_ONE(d) != 0 && IS_PRIME(d) == 0) {
            /*pollard(x_2, x_2, tmp, d, 2, 1, MAX_NUMBER_OF_TRIES);*/
            pollard_brent(x_1, x_2, d, n, 2, 3, MAX_NUMBER_OF_TRIES);

            if(FAILED(tmp)) {
                return 0;
            }

            mpz_set(d, tmp);
        }
        do {
            ADD_FACTOR(factors, num_factors, d);
            mpz_divexact(n, n, d);
        } while (mpz_divisible_p(n, d));
    }
    if(IS_ONE(n) != 0) {
        ADD_FACTOR(factors, num_factors, n);
    }
    return num_factors;
}
Ejemplo n.º 2
0
static void simple(void)
{

    TB_INFO("Simple cases");

    DEF_BIGINT(x, 2048);

    IS_COMPOSITE("0");
    IS_COMPOSITE("1");
    IS_PRIME("2");
    IS_PRIME("3");
    IS_PRIME("17");
    IS_PRIME("FA1");
    IS_COMPOSITE("FA0");

    DEL_BIGINT(x);

}
Ejemplo n.º 3
0
Archivo: sieve.c Proyecto: mju/misc
int
main(int argc, char** argv) {
    char sieve[N];
    get_primes(sieve, N);
    int count = 0;
    int i;
    for (i = 0; i < N; i++) {
        if (sieve[i] == IS_A_PRIME) {
            //printf("%d\n", i + i + 3);
            count++;
        }
    }
    /* plus 2, which is not indicated with the array. */
    printf("num of primes: %d\n", count + 1);

    printf("is 2333 a prime number? %d\n", IS_PRIME(2333));

    return 0;
}
Ejemplo n.º 4
0
static void large_primes(void)
{
    TB_INFO("Large Primes");

    DEF_BIGINT(x, 2048);

    IS_PRIME("000136A3_52B2C7A5");
    IS_PRIME("00000002_2770A7DC_599BC90B_2FF981CC_B5CF0570_3344C8F3_50418AAD");

    IS_PRIME("000067E0_4F440C5F_ECCA2694_B1A4AB4F_CEC2D2B2_D286FC93_DD259D2B_36A3A00D_F3726A4D_4DFA9919_5998D92F_43DD7370_B8C079E2_3072036F_0C13F3F6_ABA1D6DF");

    IS_PRIME("000BC9F7_E42CE741_32EC6933_DE1B8357_CD2AEB9E_4B8A5F26_BD233D1E_6F295555_4D2CFA97_60F3F69C_CC52E8E4_28F68C37_AD5BC70C_DB12F4DC_EF23CB10_1C36A2A7");

    IS_PRIME("00000005_233FE157_B5B44102_598513AE_BB8876B0_D1791769_C8A1B0F3_6875D06F_E26951C7_372192C7_B21CAB67_ADF0D6FE_1A718FB3_FC4A5145_4DE87CD3_F852005B_AAEC35D5");

    IS_PRIME("0000001A_655954FB_C4408E09_FE97EB82_5E0F0964_26B42317_A36E53FF_9608DD3F_A6610402_45906334_496987EF_B14BEA5F_7C050444_C9B22A09_EC76AF4E_BDC609D8_A90C05E9_E5AF0682_9C542DFC_F7E6B9DC_0B065659_C1816309_CD6012C3_7F8CE649_8DECF850_F33943F0_F8308140_6846D306_22E0BCE6_97E612FC_1F7A5D90_2280D6E0_3009E585");

    DEL_BIGINT(x);
}