思路:
-
对三个数相乘,结果不为完全平方数。通过Liouville函数(
(-1)^(质因数指数和)) 可知道(其实想一想就行,甚至不需要什么专门的数学公式),当质因数的质数幂数为奇数时,相乘的结果肯定不会是完全平方数可以在素数筛进行的过程中记录每个数质因数的质数和的奇偶性
for(int i = 2; i < n; i++) {
if(f[i] == -1) {
f[i] = 1;
prime.push_back(i);
}
for(int p:prime) {
if(p * i > n) break;
f[p * i] = f[i] ^ 1;
if(i % p == 0) break;
}
}