題目
要求給出一個數n,求莫比烏斯函數值miu(n)。
分析
因爲題目給出單個值,直接求miu函數即可。
#include <bits/stdc++.h>
#pragma GCC diagnostic error "-std=c++11"
#define d(x) cout << (x) << endl
#define INF 0x3f3f3f3f
#define eps 1e-8
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e9 + 10;
int num;
int miu(int num)
{
int pri_num = 0; //質因子個數
int square; //平方因子
for (int i = 2; i * i <= num; i++){
if(num%i)
continue;
square = 0;
pri_num++;
while(num%i == 0){ //分解質因子
num /= i;
square++;
}
if(square >= 2) //有因子能被除兩次
return 0;
}
num == 1 ? : pri_num++;
return (pri_num & 1) ? -1 : 1;
}
int main()
{
cin >> num;
cout << miu(num) << endl;
return 0;
}