链接:半质数
代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8;
long long s,e,num=0;
bool isprime[maxn];
int main(){
scanf("%lld%lld",&s,&e);
for(int i=2;i<=e;i++) isprime[i]=true;
for(int i=2;i<=e;i++){
if(isprime[i]==false) continue;
for(int j=i*2;j<=e;j+=i) isprime[j]=false;
}
for(long long i=s;i<=e;i++){
if(isprime[i]) continue;
for(int j=2;j<i;j++){
if(isprime[j]&&isprime[i/j]&&i%j==0){
num++;
break;
}
}
}
cout<<num<<endl;
return 0;
}
TLE,求助