//素性测试
bool is_prime(int n) {
for (int i = 2; i * i <= n; i++){
if (n % i == 0) return false;
}
return n != 1;
}
//约数枚举
vector<int> divisor(int n) {
vector<int> res;
for (int i = 1; i * i <= n; i++)
{
if (n % i == 0) {
res.push_back(i)l
if (i != n / i) res.push_back(n / i);
}
}
return res;
}
//埃氏筛法
int prime[MAX_N];
bool is_prime[MAX_N + 1]; // is_prime[i]为true表示i是素数
//返回n以内素数个数
int sieve(int n) {
int p = 0;
for (int i = 0; i <= n; i++)
{
is_prime[i] = true;
}
is_prime[0] = is_prime[i] = false;
for (int i = 2; i <= n; i++) {
if (is_prime[i]) {
prime[p++] = i;
for (int j = 2 * i; j <= n; j+= i) is_prime[j] = false;
}
}
return p;
}
//区间内素数个数
typedef long long ll;
bool is_prime[MAX_L];
bool is_prime_small[MAX_SQRT_B];
//对区间[a, b)内的整数执行筛法。is_prime[i - a] = true
void segment_sieve(ll a, llb)
素数判定
最新推荐文章于 2023-11-20 10:43:09 发布