首页 > 其他分享 >第四讲 数学知识——欧拉函数

第四讲 数学知识——欧拉函数

时间:2023-12-09 14:46:06浏览次数:37  
标签:phi frac 函数 int times 数学知识 pj 欧拉

AcWing 873. 欧拉函数

欧拉函数的定义

\(1\) ~ \(N\) 中与 \(N\) 互质的数的个数被称为欧拉函数,记为 \(\phi(N)\)。
若在算数基本定理中,\(N=p_1^{a_1}p_2^{a_2}...p_{m}^{a_m}\),则:
\(\phi(N)=N\times\frac{p_1-1}{p_1}\times\frac{p_2-1}{p_2}\times...\times\frac{p_m-1}{p_m}\)

把 \(\phi(N)=N\times\frac{p_1-1}{p_1}\times\frac{p_2-1}{p_2}\times...\times\frac{p_m-1}{p_m}\) 式子展开会发现变成了容斥原理,所以是对的。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n, a;
int main()
{
    cin >> n;
    while (n--) {
        cin >> a;
        long long ans = a;
        for (int i = 2; i <= a / i; ++i) {
            if (a % i == 0) {
                ans = ans * (i - 1) / i;
                while (a % i == 0) a /= i;
            }
        }
        if (a > 1) ans = ans * (a - 1) / a;
        printf("%lld\n", ans);
    }
    return 0;
}

AcWing 874. 筛法求欧拉函数

欧拉函数的定义

\(1\) ~ \(N\) 中与 \(N\) 互质的数的个数被称为欧拉函数,记为 \(\phi(N)\)。
若在算数基本定理中,\(N=p_1^{a_1}p_2^{a_2}...p_{m}^{a_m}\),则:
\(\phi(N)=N\times\frac{p_1-1}{p_1}\times\frac{p_2-1}{p_2}\times...\times\frac{p_m-1}{p_m}\)

分类讨论一下:

  1. 如果 \(i\) 是质数那么 \(\phi(i)=i-1\)
  2. 如果 \(i\) 是合数,我们得用线性筛了。
    • \(pj \mid i\) 时,我们只需要将基数项 \(N\) 乘上 \(pj\) 就行了,\(\phi(pj\times i)=phi(i)\times pj\)
    • \(pj \nmid i\) 时,我们要把基数项 \(N\) 乘上 \(pj\) 还得补上 \(\frac{pj-1}{pj}\),化简之后变为 \(\phi(pj\times i)=phi(i)\times(pj-1)\)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1e6 + 10;
typedef long long ll;
int phi[MAXN], primes[MAXN], n, cnt;
bool st[MAXN];
ll get(int n) {
    phi[1] = 1;
    for (int i = 2; i <= n; ++i) {
        if (!st[i]) {
            primes[cnt++] = i;
            phi[i] = i - 1;
        }
        for (int j = 0; primes[j] <= n / i; ++j) {
            st[primes[j] * i] = true;
            if (i % primes[j] == 0) {
                phi[i * primes[j]] = phi[i] * primes[j];
                break;
            }
            phi[i * primes[j]] = phi[i] * (primes[j] - 1);
        }
    }
    ll ans = 0;
    for (int i = 1; i <= n; ++i)
        ans += phi[i];
    return ans;
}
int main() {
    cin >> n;
    cout << get(n);
    return 0;
}

标签:phi,frac,函数,int,times,数学知识,pj,欧拉
From: https://www.cnblogs.com/coldair7/p/17890928.html

相关文章

  • 第四讲 数学知识——约数
    AcWing869.试除法求约数时间复杂度\(O(n\sqrta)\)#include<iostream>#include<cstring>#include<algorithm>#include<vector>usingnamespacestd;vector<int>res;intn,a;intmain(){cin>>n;while(n--){......
  • 第四讲 数学知识——质数
    AcWing866.试除法判定质数时间复杂度\(O(T\sqrta)\)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;boolisprime(intx){if(x<2)returnfalse;for(inti=2;i<=x/i;++i){if(x......
  • 4.常见函数
    一、概述功能:类似于java中的方法好处:提高重用性和隐藏实现细节调用:select函数名(实参列表);二、单行函数1、字符函数concat:连接substr:截取子串upper:变大写lower:变小写replace:替换length:获取字节长度trim:去前后空格lpad:左填充rpad:右填充instr:获取子串第一次出......
  • 三角函数
    三角函数一、三角函数1.1任意角初中学的角度全都是从0~360°,而高中最大的进步就是拓展了角度的范围,可以从负无穷到正无穷。(1)任意角的定义:一条射线绕着端点在平面内旋转而成的图形,角的大小就是转过的角度,角的正负就是旋转的方向(逆时针为正)。就像这个角是\(\theta\),大家不......
  • Python:函数综合案例-黑马ATM
    综合案例:黑马ATM主菜单查询余额效果存取款效果#总额totaltotal=5000000#定义None影响不大,可以不定义name=None#要求客户输入姓名name=input("请输入您姓名:")#菜单提示defmenu():print("-"*19+"主菜单"+"-"*19)print(f"{name},您......
  • Python中函数的基础定义语法
    1、函数的定义语法:def函数名(传入参数):函数体return返回值2、函数的调用:函数名(参数)3、函数使用步骤:先定义函数后调用函数4、注意事项:参数不需要,可以省略返回值如不需要,可以省略函数必须先定义后使用#定义一个函数,输出相关信息defsay_hi():......
  • Python中函数的传入参数
    函数的传入参数:在函数进行计算的时候,接受外部(调用时)提供数据函数的定义语法:def函数名(传入参数):函数体return返回值函数定义的x和y称之为形式参数(形参),表示函数声明将要使用2个参数参数之间使用逗号进行分隔函数调用的5和5称之为实际参数(形参),表示函数执行时真正使......
  • Python函数的返回值定义语法
    1、函数返回值的作用所谓返回值,就是程序中函数完成的事情后,最后给调用者的结果2、函数返回值的定义语法def函数名(参数...):函数体return返回值使用关键字:return来返回结果3、注意:函数体在遇到return后就结束,写在return后的代码不会执行#定义一个函数,完成2数相加......
  • Python函数返回值之None类型
    None类型无返回值的函数,实际上返回了None函数返回None,就表示这个函数没有返回什么有意义的内容,也就是返回了空的意思None类型的应用场景在函数无返回值上用在if判断上在if判断中,None等同于False一般用于在函数中主动返回None,配合if判断做相关处理用于声明无内容的......
  • Python函数的说明文档
    函数的说明文档函数是纯代码,可以给函数添加说明文档,辅助理解函数作用定义语法:param用于解释参数:return用于解释返回值#定义函数,进行文档说明defadd(x,y):"""add函数可以接收2个参数,进行2数相加的功能:paramx:形参x表示相加的其中一个数:para......