Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

TLE in KPRIME

$
0
0

Someone please help me optimizing the approach in this problem

my code is here

//Program to print all prime factors of a given number n

#include "stdio.h"
#include "set"
#include "math.h"
using namespace std;


int inline inp()
{
    int n=0;
    char c=getchar_unlocked();
    while(c < '0' || c >'9') {c=getchar_unlocked();}
    while(c>='0' && c<='9')
    {
        n=(n<<3)+(n<<1)+c-'0';
        c=getchar_unlocked();
    }
    return n;
}


int pfactor(int n)
{
    set<int> s;
    int i;
    //while n is divisible by 2,print 2 and divide by 2
    while(n%2 == 0)
    {
        s.insert(2);
        n = n/2;
    }

    //n must be odd at this point
    //so we can skip one element  i.e i += 2
    for (i = 3; i < sqrt(n); i+=2)
    {
        //while i divides n, print i, and divide n by i
        while(n%i == 0)
        {
            s.insert(i);
            n = n/i;
        }
    }
    //if n is greater than 2, it is prime,print n
    if(n>2)
        s.insert(n);

    return s.size();
}

int main()
{
    int t,a,b,k,i,count;
    t = inp();
    while(t--)
    {
        count = 0;
        a=inp();
        b = inp();
        k = inp();
        for (i = a; i <= b; ++i)
        {
            if(pfactor(i) == k)
            count++;
        }
        printf("%d\n",count );
    }

    return 0;
}

Viewing all articles
Browse latest Browse all 39796

Trending Articles