zoukankan      html  css  js  c++  java
  • 莫比乌斯函数 51nod-1240(合数分解试除法)

    就是输出n时,莫比乌斯函数的值。直接将n唯一分解即可。

    思路:筛出105以内的素数,因为109开方,105就差不多。当一个大数还没有被1000个素数分解,那么这个数基本上可以认为是素数(为合数为小概率了)。使用欧拉筛筛出105以内的素数,然后枚举素数试除即可

    ac代码:

    #include<cstdio>
    #include<cstring>
    #define maxn int(1e5)
    #define ll long long
    int prime[maxn];
    bool vis[maxn];
    int Prime()
    {
        int cnt = 0;
        for (int i = 2; i < maxn; ++i)
        {
            if (!vis[i])
            {
                prime[cnt++] = i; 
            }
            for (int j = 0; j <= cnt&&prime[j] * i < maxn; ++j)
            {
                vis[prime[j] * i] = 1;
                if (i%prime[j] == 0){ break; }
            }
        }
        return cnt;
    }
    int main()
    {
        int k=Prime();
        int m = 1;
        ll n;
        scanf("%lld", &n);
        for (int i = 0; i < k&&n!=1; ++i)
        {
            if (n%prime[i]==0)
            {
                int h = 0;
                while (n%prime[i] == 0){ ++h; n /= prime[i]; }
                if (h != 1){ printf("0
    "); return 0; }
                m = -m;
            }
        }
        if (n>1)printf("%d
    ", -m);
        else printf("%d
    ", m);
    }
  • 相关阅读:
    PHP线程安全
    Oracle中MD5+Base64加密实现
    1002. A+B for Polynomials (25)
    1001. A+B Format (20)
    Rails,uva 514
    Database,Uva1592
    Hello World for U
    D3.js 力导向图
    从零开始CSS(一 2016/9/21)
    从零开始HTML(三 2016/9/20)
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/9684604.html
Copyright © 2011-2022 走看看