zoukankan      html  css  js  c++  java
  • 欧拉函数

    #欧拉函数及应用
    标签:专题
    一、欧拉函数的概念和本质
    欧拉函数是指1到n中与n互质的的数的个数
    *但是欧拉函数是工具,用来提供一到n中与n互质数的个数*
    二、欧拉函数的性质
    1.对于素数p,φ(p)=p-1,对于对两个素数p,q φ(pq)=pq-1
    2.即φ(mn)=φ(n)*φ(m)只在(n,m)=1时成立.
    3.如果n是质数的某一次方
    φ(p^k)=p^k-p^(k-1)=p^k(1-1/p)
    4.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn.
    φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).
    5.我们知道,一个数K能分解成p1^(q1)*p2^(q2)...
    那么,这个数的因子个数就是(1+q1)*(1+q2)*...*(1+qk)
    三、实际操作
    1.Longge的问题
    你需要求出∑gcd(i, N)(1<=i <=N)。
    #Solution
    题目中要求出∑gcd(i,N)(1<=i<=N)。
    枚举n的约数k,令s(k)为满足gcd(m,n)=k,(1<=m<=n)m的个数,则ans=sigma(k*s(k)) (k为n的约数)
    因为gcd(m,n)=k,所以gcd(m/k,n/k)=1,于是s(k)=euler(n/k)

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #define LL long long
    using namespace std;
    LL n,ans;
    int m;
    LL phi(LL x)
    {
        LL t=x;
        for(LL i=2;i<=m;i++)2018-02-22
            if(x%i==0)
            {
                t=t/i*(i-1);
                while(x%i==0)x/=i;
            }
        if(x>1)t=t/x*(x-1);
        return t;
    }
    int main()
    {
        scanf("%lld",&n);
        m=sqrt(n);
        for(int i=1;i<=m;i++)
            if(n%i==0)
            {
                ans+=(LL)i*phi(n/i);
                if(i*i<n)ans+=(LL)(n/i)*phi(i);  
            }
        printf("%lld",ans);
        return 0;
    }

     


    2. 仪仗队
    #Solution
    只有列数和行数互质的才能看见.

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,tot;
    int phi(int x){
        int t=x;
        for(int i=2;i<=sqrt(x);i++)
            if(x%i==0){
                t=t/i*(i-1);
                while(x%i==0)x/=i;
            }
        if(x>1)t=t/x*(x-1);
        return t;
    }
    int main(){
        cin>>n;
        if(n==1){
            cout<<0;
            return 0;
        }
        m=sqrt(n);
        for(int i=1;i<n;i++)
            tot+=phi(i);
        tot*=2;
        tot++;
        cout<<tot<<endl;
        return 0;
    }
    

     

  • 相关阅读:
    your account already has a valid ios distribution certificate
    uinavigation样式
    phonegap ios默认启动页
    git init出错
    ios assetlibrary
    uitableviewcell高度自适应笔记
    ios frame bounds applicationframe
    java学习笔记
    file not found while xcode archive
    c++回调
  • 原文地址:https://www.cnblogs.com/KingBenQi/p/8459895.html
Copyright © 2011-2022 走看看