 # TLE in KPRIME

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;
}``````

Hello,

Please refer to the editorial for a detailed description about what you need to do in order to get AC…

Your idea is correct but you need to do some pre-calculations (that is, calculations before reading input). It is often known as pre-computing or memoizing the values Good luck,

Bruno

2 Likes