[题]欧拉函数 #欧拉函数

news2024/11/27 23:55:56

目录

  • 欧拉函数
  • 一、用公式求
    • 代码
  • 二、线性筛法求欧拉函数
  • 扩展欧拉定理


欧拉函数

AcWing 873. 欧拉函数

一、用公式求

  1. 定义:1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为ϕ(N)。
    怎么求呢??
    有一个公式:
    N = p1a1 X p2a2 X p3a3……X pkak ;
    ϕ(N) = N(1 - 1/p1) X N(1 - 1/p2) X N(1 - 1/p3) ……X N(1 - 1/pk);
  2. 例子:
    N= 6 = 2 X 3;
    ϕ(N) = 6 X (1 - 1/2)X (1 - 1/3) = 2
  3. 证明:容斥原理 。
    1 ~ n 中n的质因子有 p1a1 X p2a2 X p3a3……X pkak ;
    1.从1~ n中去掉 p1a1、 p2a2 、 p3a3……、 pkak 的倍数。
    =>N - N / p1 - N / p2 - N / p3 …… N / pk
    2.把所有重复减去的倍数加上。=> + N/(pi X pj…)
    3.减去所有pipj…pk的倍数……
    ……
    4.以此类推,得到ϕ(N) = N(1 - 1/p1) X N(1 - 1/p2) X N(1 - 1/p3) ……X N(1 - 1/pk);

代码

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

二、线性筛法求欧拉函数

AcWing 874. 筛法求欧拉函数

O(n) : 线性筛法模板,可以求出来很多东西。
线性筛法模板:


ll get_eulers(int n){
    for(int i = 2; i <= n;i ++){
        if(!st[i])//如果没被筛去,说明是质数
            primes[cnt ++] = i;//将质数入队
        for(int j = 0 ; primes[j] <= n / i;j ++){//干掉i的倍数
            st[primes[j] * i] = 1;
            if(i % primes[j] == 0)
                break;
        }
    }
}

再进行更改:

ll get_eulers(int n){
    phi[1] = 1;//1当中与1互质的只有1自己
    for(int i = 2; i <= n;i ++){
        if(!st[i]){
            primes[cnt ++] = i;
            phi[i] = i - 1;//如果一个数i是质数,那么它的欧拉函数值应该是 i-1
        }
        for(int j = 0 ; primes[j] <= n / i;j ++){
            st[primes[j] * i] = 1;
            if(i % primes[j] == 0){
                phi[primes[j] * i] = phi[i] * primes[j];
            	/*
            	i % primes[j] == 0时, primes[j]是i的一个质因子 
            	phi[i * primes[j]]只是比phi[i]多了一个primes[j]而已,
            	primes[j]是i的一个质因子,所以
            	phi[i]里面已经有一个(1-1/pj)了,
            	所以phi[primes[j] * i]是i的欧拉值乘上i的质因子primes[j]
            	*/
                break;
            }
            phi[primes[j] * i] = phi[i] * (primes[j] - 1);
            /*
            如果i % primes[j] != 0时, primes[j]是i的非质因子
            那么 phi[primes[j] * i] = primes[j] * phi[i] * (1-(primes[j] - 1) / primes[j])
            即 phi[primes[j] * i] = phi[i] * (primes[j] - 1);
			*//
        }
    }
}

扩展欧拉定理

在这里插入图片描述

在这里插入图片描述


2021-08-26

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Vue.js+Spring Boot全栈开发实战》简介

大家好&#xff0c;我是老卫。 恰逢中秋国庆双节&#xff0c;不想出门看人山&#xff0c;惟愿宅家阅书海&#xff01; 今天开箱的这本书是《Vue.jsSpring Boot全栈开发实战》。 外观 从书名故名思议&#xff0c;就是基于Vue.jsSpring Boot来实现企业级应用全栈开发。 该书由…

(2023,ControlNet,CFGRW,diffusion,控制组合)向文本到图像扩散模型添加条件控制

Adding Conditional Control to Text-to-Image Diffusion Models 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2.相关工作 2.1. 微调神经网络 2.2. 图像扩散 …

基于electron25+vite4创建多窗口|vue3+electron25新开模态窗体

在写这篇文章的时候&#xff0c;查看了下electron最新稳定版本由几天前24.4.0升级到了25了&#xff0c;不得不说electron团队迭代速度之快&#xff01; 前几天有分享一篇electron24整合vite4全家桶技术构建桌面端vue3应用示例程序。 https://www.cnblogs.com/xiaoyan2017/p/17…

【C++哈希应用】位图、布隆过滤器

【C哈希应用】位图、布隆过滤器 目录 【C哈希应用】位图、布隆过滤器位图概念位图的实现位图改造位图应用总结布隆过滤器布隆过滤器的提出布隆过滤器的概念布隆过滤器的查找布隆过滤器删除布隆过滤器优点布隆过滤器缺陷 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9…

【人物】知识就是金钱,程序员搞副业年入200万,各行各业的你也可以效仿

优秀的普通人 大家好&#xff0c;我是老李。一个专注于收集互联网有用信息的博主。 今天我们这一期要讲的是人物。讲什么人物呢&#xff1f; 首先我们不会讲一些特别知名和特别牛逼的人物&#xff0c;比如马云&#xff0c;雷军。刘强东。这些人固然很厉害很成功&#xff0c;…

【【萌新的RiscV学习之流水线控制-9】】

萌新的RiscV学习之流水线控制-9 我们按照在之前的单周期设计加入控制单元 那么我们能够在后续的设计中提供方便 我们也在流水线中加入一个control单元 我们先按照书上的指令op码值介绍一遍基本功能 接下来我们讲述control 的 控制效果 关于这些串口判别的使用 由于控制线从…

状态压缩dp,291. 蒙德里安的梦想

291. 蒙德里安的梦想 - AcWing题库 求把 NM 的棋盘分割成若干个 12 的长方形&#xff0c;有多少种方案。 例如当 N2&#xff0c;M4 时&#xff0c;共有 5 种方案。当 N2&#xff0c;M3 时&#xff0c;共有 3 种方案。 如下图所示&#xff1a; 输入格式 输入包含多组测试用例…

【yolov5】原理详解

一.模型框架 二.对Yolov5的描述 Yolov5的模型主要由 输入、Backbone、Neck、Head、输出 五部分组成。2.1 输入 输入 640x640x32.2 backbone Backbone&#xff1a;负责提取输入图像的特征。 在Yolov5中&#xff0c;常见的Backbone网络包括CSPDarknet53或ResNet。这些网络都是…

uniapp使用scroll-into-view实现锚点定位和滚动监听功能【楼层效果 / 侧边导航联动效果】

大佬网址&#xff1a; https://blog.csdn.net/weixin_47136265/article/details/132303570 效果 代码 <template><!-- 这里面有2个bug&#xff0c;已经解决&#xff0c;需要知道的地方1.methods里的scrollEvt(e)方法里面的 this.tabIndex index ! -1 ? index :…

python -m pip install --upgrade pip失败

显示这样的报错&#xff1a; You are using pip version 9.0.1, however version 23.2.1 is available. You should consider upgrading via the python -m pip install --upgrade pip command. 换源安装 python -m pip install --upgrade pip -i https://pypi.douban.com/s…

2023-9-30 JZ34 二叉树中和为某一值的路径

题目链接&#xff1a;二叉树中和为某一值的路径 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left null;* TreeNode right null;* public TreeNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、…

1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码

1.RFID概念 RFID是Radio Frequency Identification的缩写&#xff0c;又称无线射频识别&#xff0c;是一种通信技术&#xff0c;可通过无线电讯号识别特定目标并读写相关数据&#xff0c;而无需与被识别物体建立机械或光学接触。 RFID&#xff08;Radio Frequency Identificati…

MyBatis的一级缓存和二级缓存:原理和作用

MyBatis的一级缓存和二级缓存&#xff1a;原理和作用 引言 在数据库访问中&#xff0c;缓存是一种重要的性能优化手段&#xff0c;它可以减少数据库查询的次数&#xff0c;加快数据访问速度。MyBatis作为一款流行的Java持久层框架&#xff0c;提供了一级缓存和二级缓存来帮助…

机器学习之广义增量规则(Generalized Delta Rule)

文章目录 广义增量规则的公式s型函数的增量规则 广义增量规则的公式 对于单层神经网络的增量规则&#xff0c;已经过时啦&#xff0c;现在存在一种更广义的增量规则形式。对于任意激活函数&#xff0c;增量规则表示如下式它与前一节的delta规则相同&#xff0c;只是ei被替换为…

案例突破——再探策略模式

再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化&#xff08;配置文件反射&#xff09; 四、总结五、升华 一、背景介绍 在做项目…

ccf_csp第一题汇总

ccf_csp第一题汇总 printf()输出格式大全&#xff08;附 - 示例代码&#xff09;现值计算AcWing 4699. 如此编码AcWing 4509. 归一化处理(小数位数根号函数)AcWing 4454. 未初始化警告AcWing 4280. 序列查询AcWing 4006. 数组推导(小陷阱)AcWing 3292. 称检测点查询AcWing 3287…

git你学“废”了吗?——git本地仓库的创建

git你学“废”了吗&#xff1f;——git本地仓库的创建&#x1f60e; 前言&#x1f64c;初识gitgit 本地仓库的创建1、基于centos7环境下 git的下载2、设置自己的用户名和邮箱 查看.git中的结构区分清楚版本库和工作区 查看git中的相关内容查看仓库的状态 总结撒花&#x1f49e;…

给奶牛做直播之一

一、前言 前几天看了薇亚写的一本书《人生是用来改变的》&#xff0c;和同事聊的时候同事问我这本书讲了什么&#xff0c;我回想了一下说主要是讲&#xff1a;我很辛苦&#xff0c;我很上进&#xff0c;我很牛逼&#xff0c;我很善良&#xff01;话说成功人士放个屁都是香的&am…

[题]修剪草坪 #单调队列优化

题目 洛谷上的题目 Acwing上的题目 根据y总的一波分析&#xff0c;我们得出……公式就是一切…… 所以&#xff0c;我要学会推公式…… 推公式…… 公式…… #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 1e5 10; int n, m; ll s[N…