• 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 }



  • 相关阅读:
    java bio 之聊天室
    自定义gradle plugin
    gradle build 找不到tools.jar 解决方法
    java switch case 枚举类型的反编译结果
    spring mvc 关键接口 HandlerMapping HandlerAdapter
    H5 Video 去除 下载按钮 禁用右键
    https 请求发送 例子 tls && ssl
    mac 安装mongodb
    (扫盲)DTO数据传输对象
    (扫盲)RPC远程过程调用
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/9939846.html
Copyright © 2020-2023  润新知