오늘도 안될 것 같은 느낌
에라토스테네스의 체의 원리로 풀 수 있다.
#include <iostream>
#include <cmath>
using namespace std;
bool isSquare[1000001];
int main() {
long long minValue, maxValue;
cin>>minValue>>maxValue;
int ret=0;
for(long long i=2; i*i<=maxValue; ++i) {
long long square=i*i;
for(long long j=((minValue-1)/square+1)*square; j<=maxValue; j+=square) {
isSquare[j-minValue]=true;
}
}
for(long long i=minValue; i<=maxValue; ++i) {
if(!isSquare[i-minValue])
ret++;
}
cout<<ret;
//std::cout << "Hello, World!" << std::endl;
return 0;
}