基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
取消关注
莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(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
质因数分解模板题
AC代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 using namespace std; 5 const int maxsum=1e6; 6 int flag=0; 7 int factor(int x) 8 { 9 int ret=0; 10 int tmp=(int)(double(sqrt(x)+1)); 11 for(int i=2;i<=tmp;i++) 12 if(x%i==0) 13 { 14 ret++; 15 int sum=0; 16 while(x%i==0) 17 { 18 x/=i; 19 sum++; 20 if(sum>=2) 21 { 22 flag=1; 23 return 0; 24 } 25 } 26 } 27 if(x!=1) 28 ret++; 29 return ret; 30 } 31 int main() 32 { 33 int n; 34 cin>>n; 35 flag=0; 36 int ans=factor(n); 37 if(flag) 38 cout<<0<<endl; 39 else 40 printf("%d ",ans%2==0?1:-1); 41 return 0; 42 }