#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<stack>
#include<vector>
#include<cstring>
#define N 100005
using namespace std;
vector<int> prime;
bool pri[N];
int mu[N];
void init()
{
memset(pri,true,sizeof(pri));
mu[1]=1;
for(int i=2;i<N;i++)
{
if(pri[i])
{
prime.push_back(i);
mu[i]=-1;
}
for(int j=0;j<prime.size()&&i*prime[j]<N;j++)
{
pri[i*prime[j]]=false;
if(i%prime[j])
mu[i*prime[j]]=-mu[i];
else
{
mu[i*prime[j]]=0;
break;
}
}
}
}
莫比乌斯函数模板
最新推荐文章于 2022-06-29 18:24:06 发布
本文介绍了一种使用素数筛法求解莫比乌斯函数的方法,并通过C++代码实现展示了如何计算1到N之间的所有整数对应的莫比乌斯函数值。该方法首先初始化一个布尔数组标记所有数为潜在素数,然后遍历这些数并利用已知素数更新标记和莫比乌斯函数值。

3962

被折叠的 条评论
为什么被折叠?



