1240 莫比烏斯函數(單值求解)

題目

要求給出一個數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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章