1240 莫比乌斯函数

1240 莫比乌斯函数 

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

github地址

莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(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)。

Input

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

Output

输出miu(n)。

Input示例

5

Output示例

-1
/*
    data:2018.5.12
    author:gsw
    link:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1240
    account:[email protected]
*/
#define ll long long
#define IO ios::sync_with_stdio(false);

#include<math.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
int prime(int n)
{
    int m=sqrt(n)+1;
    int kk=0;
    for(int i=2;i<=m;i++)
    {
        if(n%i==0)
        {
            int cnt=0;
            while(n%i==0)
            {
                n=n/i;
                cnt++;
                if(cnt>=2)return 0;
            }
            kk++;
        }
    }
    if(n>1)kk++;
    if(kk%2==0)return 1;
    return -1;
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",prime(n));
    //main();
    return 0;
}

  

原文地址:https://www.cnblogs.com/fantastic123/p/9029973.html

时间: 2024-10-16 11:10:57

1240 莫比乌斯函数的相关文章

51nod 1240 莫比乌斯函数 (质因数分解)

1240 莫比乌斯函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 取消关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数). 具体定义如下: 如果一个数包含平方因子,那么miu(n) = 0.例如:miu(4), miu(12), miu(18) = 0. 如果一个数不包含平方因子,并且有k个不同的质因

51Nod - 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), mi

莫比乌斯函数-质因数分解

1240 莫比乌斯函数 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数). 具体定义如下: 如果一个数包含平方因子,那么miu(n) = 0.例如:miu(4), miu(12), miu(18) = 0. 如果一个数不包含平方因子,并且有k个不同的质因子,那么miu(n)

三行写出莫比乌斯函数(HDU1695)

莫比乌斯函数是可以在三行内写出来的 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1000000; 5 int mu[maxn+10],T; 6 void Mobius(){ 7 for(int d=1,k;d<=maxn;++d) 8 for(mu[1]=1,k=d<<1;k<=maxn;mu[k]=mu[k]-mu[d],k+=d);

HDU 6053 TrickGCD 莫比乌斯函数/容斥/筛法

题意:给出n个数$a[i]$,每个数可以变成不大于它的数,现问所有数的gcd大于1的方案数.其中$(n,a[i]<=1e5)$ 思路:鉴于a[i]不大,可以想到枚举gcd的值.考虑一个$gcd(a_1,a_2,a_3…a_n)=d$,显然每个$a_i$的倍数都满足,有$\frac{a_i}{d}$种方案 那么一个d对答案的贡献为\[\prod_{i=1}^{min(a)}{\lfloor\frac{a_i}{d}\rfloor}    \] 但是所有的d计入会有重复情况,考虑容斥,对d进行素数分

【51nod-1239&amp;1244】欧拉函数之和&amp;莫比乌斯函数之和 杜教筛

题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 杜教筛裸题,不过现在我也只会筛这俩前缀和... $$s(n)=\sum _{i=1}^{n}f(i)$$ 那么就有: $$\sum_{i=1}^{n}f(i)\lfloor \frac{n}{i} \

莫比乌斯函数&amp;莫比乌斯反演

莫比乌斯函数:http://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html  OrzPoPoQQQ 这个证明过程第三步和第四步一开始没看懂…… 第三步:观察计算左边f(k)的系数,可以看出只要d不大于n/k均可以使μ(d)成为f(k)的系数,那么f(k)的系数就是sigma[d丨(n/k)] μ(d) (方括号内为d的范围) 利用整除的性质,重新组合了一下这几项,相当于对一个多项式重新分组提取因式什么的…… 第四步:利用sigma μ(d)=

【数论】莫比乌斯函数

莫比乌斯函数     莫比乌斯函数!?提到这个东西你会不会想到一个大神级的玩意:莫比乌斯反演       莫比乌斯函数其实很简单,非常非常简单…… 好了,步入正题吧……        我们定义一个函数M,参数为x,函数内容如下: X=X1^P1*X2^P2*……*Xa^Xk        那么这个式子到底是用来干什么的呢?        我们使X1.X2.X3都存在一个素数集合中,那么它们必定都是素数        则P1.P2.P3……为指数,因为对于任何数x(x>=2),都可以写成这种形式.

[BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. 怎么来求呢?我们使用容斥原理. 先求出不能送的数(即含有平方因子的数)有多少个,然后用总数减去就可以了. 那么,就是 含有一个质数平方因子的数(2^2的倍数 + 3^2的倍数 + 5^2的倍数....) - 含有两个质数平方因子的数((2 * 3)^2的倍数 + (2 * 5)^2的倍数 + ...