#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000000;
bool check[MAXN+10];
int prime[MAXN+10];
int mu[MAXN+10];
void Mobius()
{
memset(check,false,sizeof(check));
mu[1] = 1;
int tot = 0;
for(int i = 2; i <= MAXN; i++)
{
if( !check[i] )
{
prime[tot++] = i;
mu[i] = - 1;
}
for(int j = 0; j < tot; j++)
{
if(i * prime[j] > MAXN) break;
check[i * prime[j]] = true;
if( i % prime[j] == 0)
{
mu[i * prime[j]] = 0;
break;
}
else
{
mu[i * prime[j]] = - mu[i];
}
}
}
}

本文介绍了一个使用筛法计算Mobius函数的C++程序。通过初始化布尔数组和整数数组,程序能够有效地找出指定范围内的素数,并计算这些素数的Mobius函数值。此算法在数论和组合数学中有着广泛的应用。
498

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



