zoukankan      html  css  js  c++  java
  • 1240 莫比乌斯函数

    1240 莫比乌斯函数

     
    莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。
     
    具体定义如下:
    如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu(12), miu(18) = 0。
    如果一个数不包含平方因子,并且有k个不同的质因子,那么miu(n) = (-1)^k。例如:miu(2), miu(3), miu(30) = -1,miu(1), miu(6), miu(10) = 1。
    给出一个数n, 计算miu(n)。
     

    输入

    输入包括一个数n,(2 <= n <= 10^9)

    输出

    输出miu(n)。

    输入样例

    5

    输出样例

    -1


    莫比乌斯函数模板题

     1 //莫比乌斯函数 
     2 
     3 #include <bits/stdc++.h>
     4 #define N 1000005
     5 using namespace std;
     6 
     7 bool check[N];
     8 int prime[N];
     9 int mu[N];
    10 
    11 void moblus(){ //莫比乌斯函数  线性筛
    12     mu[1] = 1;
    13     int tot = 0;
    14     for(int i = 2; i <= N; ++i){
    15         if(!check[i]){
    16             prime[tot++] = i;
    17             mu[i] = -1;
    18         }
    19         for(int j = 0; j < tot; ++j){
    20             if(i*prime[j] > N) break;
    21 
    22             check[i*prime[j]] = true;
    23 
    24             if( i%prime[j] ){
    25                 mu[i*prime[j]] = -mu[i];
    26             }else{
    27                 mu[i*prime[j]] = 0;
    28                 break;
    29             }
    30         }
    31     }
    32 }
    33 
    34 
    35 int miu(int n){ // 单点计算
    36     int ans = 0;
    37     for(int i = 2; i*i <= n; ++i){
    38         if(n%i)
    39             continue;
    40         int cnt = 0;
    41         ans ++;
    42         while(n%i == 0){
    43             n /= i;
    44             cnt ++;
    45         }
    46         if(cnt >= 2){
    47             return 0;
    48         }
    49     }
    50     if(n != 1)
    51         ans ++;
    52     return ans%2 ? -1 : 1;
    53 }
    54 
    55 int main(){
    56     int n;
    57     cin>>n;
    58     // moblus();
    59     // for(int i = 1; i <= n; i++){
    60     //     cout<<mu[i]<<" ";
    61     // }
    62     // cout<<endl;
    63     cout<<miu(n)<<endl;
    64     return 0;
    65 }



  • 相关阅读:
    [毕业设计]多文档自动摘要.面向灾害事件
    windows,无法启动承载网络,解决办法
    【现代程序设计】【期末作业】【homework-09】
    ColorNote.疑难解答
    【现代程序设计】【homework-08】
    【现代程序设计】【homework-07】
    【现代程序设计】【homework-05】
    【现代程序设计】【homework-04】
    homework-10
    homework-06&homework-09
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/9939846.html
Copyright © 2011-2022 走看看