Sort by

recency

|

342 Discussions

|

  • + 0 comments

    I'm new to this website. I attempted this one by declaring an array with the first primes in order such that product of those primes are less than 10^18 and multiplying the next prime would have taken the product higher. Then simply did a while loop on n calculating the cumulative product and adding one to the index until the product was over n. then return one less than the index. It worked and I didn't have to add any lines but I don't know if this was the most efficient way or if I was not supposed to use consts. const uint8_t P[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};

    int primeCount(long n) { uint8_t i=0; long long prod=1; while ((prod<=n)&&(i<16)){ prod=(long long)prod*(long long)P[i]; i++; }

    return (i-1); 
    

    }

  • + 0 comments

    Refrence to @ian16

    #include <bits/stdc++.h>
    #define ull unsigned long long
    
    using namespace std;
    
    string ltrim(const string &);
    string rtrim(const string &);
    
    
    /*
     * Complete the 'primeCount' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts LONG_INTEGER n as parameter.
     */
    
    ull gcd(ull a, ull b){
        while(b){
            ull t = b;
            b = a%b;
            a = t;
        }
        return a;
    }
    
    int primeCount(long n) {
        int count;
        ull prod;
        ull prime;
        
        if (n<2) return 0;
        prod = 2;
        count = 1;
        
        for(prime = 3; prod*prime<=n; prime+=2){
            if (gcd(prod, prime) == 1){
                prod *= prime;
                count++;
            }
        }
        return count;
    }
    
    int main()
    {
        ofstream fout(getenv("OUTPUT_PATH"));
    
        string q_temp;
        getline(cin, q_temp);
    
        int q = stoi(ltrim(rtrim(q_temp)));
    
        for (int q_itr = 0; q_itr < q; q_itr++) {
            string n_temp;
            getline(cin, n_temp);
    
            long n = stol(ltrim(rtrim(n_temp)));
    
            int result = primeCount(n);
    
            fout << result << "\n";
        }
    
        fout.close();
    
        return 0;
    }
    
    string ltrim(const string &str) {
        string s(str);
    
        s.erase(
            s.begin(),
            find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
        );
    
        return s;
    }
    
    string rtrim(const string &str) {
        string s(str);
    
        s.erase(
            find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
            s.end()
        );
    
        return s;
    }
    
  • + 0 comments

    THIS CODE WORKSSS.. EASYYY PEASYYY

    def primeCount(n):
        if n < 2:
            return 0
        primes = []
        candidate = 2
        product = 1
        count = 0
        # We need to find the product of consecutive primes <=n
        while True:
            # Check if candidate is prime
            is_prime = True
            for p in primes:
                if p * p > candidate:
                    break
                if candidate % p == 0:
                    is_prime = False
                    break
            if is_prime:
                if product * candidate > n:
                    break
                product *= candidate
                count += 1
                primes.append(candidate)
            candidate += 1
        return count
    
    # Read input and process queries
    if __name__ == "__main__":
        q = int(sys.stdin.readline())
        for _ in range(q):
            n = int(sys.stdin.readline())
            print(primeCount(n))
    
  • + 0 comments

    The most beautiful implementation

    if(n<2){ return 0; } else if(n<6){ return 1; } else if(n<30){ return 2; } else if(n<210){ return 3; } else if(n<2310){ return 4; } else if(n<30030){ return 5; } else if(n<510510){ return 6; } else if(n<9699690){ return 7; } else if(n<223092870){ return 8; } else if(n<6469693230){ return 9; } else if(n<200560490130){ return 10; } else if(n<7420738134810){ return 11; } else if(n<304250263527210){ return 12; } else if(n<13082761331670030){ return 13; } else if(n<614889782588491410){ return 14; } return 15;

  • + 0 comments

    I am trying to use sympy.primerange to get alist of prime numbers, but the output fails with message "no module sympy found"

    How can we solve this issue. to access sympy I used import sympy