题意:
two different numbers a and b are friends if gcd(a,b), agcd(a,b), bgcd(a,b) can form sides of a triangle.
写了几个数字之后发现,孤单数字是素数,
但是素数不一定是孤单数字,如果他的平方存在,就不是
eg7,49
7,1,7
所以
把所有的素数判断出来,如果平方存在,--;否则++。
跑一边前缀和就可以了
坑点:
1.数据问题
判断的时候,两个素数的乘积会超出int
由sqrt(n) <= 1000这个条件判断
2.cin,cou超时,即使加了优化
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
int t,n;
int m