➤ Problem Link : DIV
👉 Hint : Use Sieve method to find smallest prime factor
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int minPrime[1000001];
int cnt[1000001];
void seive()
{
int n=1000000;
cnt[1]=1;
for(int i=2;i<=n;i++)
cnt[i]=2; // 1 && itself
minPrime[1]=0;
for(int i=2;i<=n;i++)
{
minPrime[i]=i;
for(int j=2*i;j<=n;j+=i)
cnt[j]++;
}
for(int i=2;i*i<=n;i++)
{
if(minPrime[i]!=i)
continue;
for(int j=i*i;j<=n;j+=i)
if(minPrime[j]==j)
minPrime[j]=i;
}
}
int main()
{
int n=1000000;
seive();
int c=9;
for(int i=2;i<=n;i++)
{
int l=cnt[i];
// cout<<i<<" "<<l<<endl;
int x=minPrime[l];
int y=l/x;
if(x!=y && minPrime[y]==y)
{
// cout<<i<<"\n";
c--;
if(c==0)
{
cout<<i<<"\n";
c=9;
}
}
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
