Beispiel #1
0
int getPrime(int n, int lo, int hi){
    //This block contains the most naive way to find the nth prime.
    /*
    for (int i = 0; primenum < n; i ++){
        if (isPrime(i) == 1)
            primenum++;
    }*/
    printf("%i + %i\n", lo, hi);
    lo = (unsigned long) lo;
    hi = (unsigned long) hi;
    unsigned long primeguess = (lo+hi)/2;
    unsigned long primeguessnum = primesBelow(primeguess);
    printf("%i, %i\n", primeguess, primeguessnum);
    if (primeguessnum == n){
        while (isPrime(primeguess) == 0){
            primeguess -= 1;
        }
        return primeguess;
    }
    else if (primeguessnum > n){
        return getPrime(n, primeguess, hi);
    }
    else return getPrime(n, lo, primeguess);
     
}
int main(){
    //TODO: faster
    uint max = 12000;

    vector<ullint> p = primesBelow(max);

    uint n1 = 1, n2 = 1, d1 = 3, d2 = 2;

    uint count = 0;

    for(uint d = 3; d <= max ; d++){
        uint c1 = ceil(n1 * d / d1);
        uint c2 = ceil(n2 * d / d2);
        for(uint n = c2; n > c1; n--){
            cout << n << endl;
            if(HCF(n, d) == 1){
                cout << "found" << endl;
                count++;
            }
        }
        cout << "maxed out bro" << endl;
    }

    cout << count << endl;

    return 0;
}