【算法基础:数学知识】4.3 欧拉函数

文章目录

  • 欧拉函数
    • 定义
    • 性质
  • 例题列表
    • 873. 欧拉函数(使用质因数分解求一个数的欧拉函数)
      • 原理讲解(公式推导)⭐
      • 解法代码
    • 874. 筛法求欧拉函数(求 1 ~ n 中所有数字的欧拉函数)⭐

欧拉函数

https://oi-wiki.org/math/number-theory/euler/

定义

在这里插入图片描述
1 ~ n 中和 n 互质的数字个数

Q:怎么判断两个数是互质的?
A:两个数的 最大公约数为1。(比如 1 和 1 就是互质的)

性质

在这里插入图片描述

φ ( n ) \varphi(n) φ(n)
在这里插入图片描述
即 先完成质因数分解,然后按公式计算。

例题列表

873. 欧拉函数(使用质因数分解求一个数的欧拉函数)

https://www.acwing.com/activity/content/problem/content/942/

在这里插入图片描述

原理讲解(公式推导)⭐

使用 容斥原理 计算出 ——
在这里插入图片描述

1 ~ N 中所有质数的个数是:

在这里插入图片描述
化简之后就是公式了。

在这里插入图片描述

解法代码

记住公式,
使用质因数分解求出 n 的所有的质因子。
使用所有质因子按照公式计算 n 的欧拉函数。(题目中也给出了公式)

import java.util.*;public class Main {public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();while (n-- != 0) {System.out.println(euler(sc.nextInt()));}}static long euler(int n) {long res = n;for (int i = 2; i <= n / i; ++i) {if (n % i == 0) {while (n % i == 0) n /= i;res = res * (i - 1) / i;}}if (n > 1) res = res * (n - 1) / n;return res;}
}

874. 筛法求欧拉函数(求 1 ~ n 中所有数字的欧拉函数)⭐

https://www.acwing.com/activity/content/problem/content/943/

在这里插入图片描述

在欧氏筛质数的过程中计算欧拉函数。

使用到的一些欧拉函数的性质:

  1. 质数 x x x 的欧拉函数是 x − 1 x - 1 x1
  2. 对于 t = p [ j ] ∗ i t = p[j] * i t=p[j]i。当 i i % p[j] == 0 i 时,即 p [ j ] p[j] p[j] 也是 i i i 的质因子,则 t = i ∗ p [ j ] t = i * p[j] t=ip[j] 的质因子和 i i i 的质因子一样,因此 e u l e r [ t ] = p [ j ] ∗ e u l e r [ i ] euler[t] = p[j] * euler[i] euler[t]=p[j]euler[i]
  3. 对于 t = p [ j ] ∗ i t = p[j] * i t=p[j]i。当 i i % p[j] != 0 i 时,即 p [ j ] p[j] p[j] 不是 i i i 的质因子,则 t = i ∗ p [ j ] t = i * p[j] t=ip[j] 的质因子比 i i i 的质因子多了一个 p [ j ] p[j] p[j],因此 e u l e r [ t ] = p [ j ] ∗ e u l e r [ i ] ∗ ( 1 − 1 / p [ j ] ) = ( p [ j ] − 1 ) ∗ e u l e r [ i ] euler[t] = p[j] * euler[i] * (1 - 1 / p[j]) = (p[j] - 1) * euler[i] euler[t]=p[j]euler[i](11/p[j])=(p[j]1)euler[i]
import java.util.*;public class Main {final static int N = 1000001;static int cnt = 0;static int[] primes = new int[N], euler = new int[N];static boolean[] st = new boolean[N];       // 是否被筛掉了public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();euler[1] = 1;                           // 初始化欧拉数组// 欧氏筛质数for (int i = 2; i <= n; ++i) {if (!st[i]) {                       // 如果 i 没有被筛掉,是质数primes[cnt++] = i;euler[i] = i - 1;               // 质数的 x 的欧拉函数是 x - 1 (去掉它本身)}// 筛掉所有 primes[j] 的 i 倍for (int j = 0; primes[j] <= n / i; ++j) {int t = primes[j] * i;st[t] =true;if (i % primes[j] == 0) {euler[t] = euler[i] * primes[j];	// t和i的质因子一样break;}euler[t] = euler[i] * (primes[j] - 1);	// t的质因子比i多了一个p[j]}}long ans = 0;                           // 答案会超 int,所以使用 longfor (int i = 1; i <= n; ++i) {ans += euler[i];}System.out.println(ans);}
}

在 欧式筛的过程中,利用上面提到的一些性质来筛出 1 ~ n 的所有欧拉函数。

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

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

相关文章

[数据结构 -- 手撕排序算法第六篇] 递归实现快速排序(集霍尔版本,挖坑法,前后指针法为一篇的实现方法,很能打)

目录 1、常见的排序算法 1.1 交换排序基本思想 2、快速排序的实现方法 2.1 基本思想 3 hoare&#xff08;霍尔&#xff09;版本 3.1 实现思路 3.2 思路图解 3.3 为什么实现思路的步骤2、3不能交换 3.4 hoare版本代码实现 3.5 hoare版本代码测试 4、挖坑法 4.1 实现…

【手撕排序算法】---基数排序

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 我们直到一般的排序都是通过关键字的比较和移动这两种操作来进行排序的。 而今天介绍的…

​MySQL高阶语句(三)

目录 1、内连接 2、左连接 3、右连接&#xff1a; 二、存储过程⭐⭐⭐ 4. 调用存储过程 5.查看存储过程 5.1 查看存储过程 5.2查看指定存储过程信息 三. 存储过程的参数 3.1存储过程的参数 3.2修改存储过程 四.删除存储过程 MySQL 的连接查询&#xff0c;通常都是将来…

微服务一 实用篇 - 5.分布式搜索引擎(ElasticSearch基础)

《微服务一 实用篇 - 5.分布式搜索引擎&#xff08;ElasticSearch基础&#xff09;》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 5.分布式搜索引擎&#xff08;ElasticSearch基础&#xff09;》 《微服务一 实用篇 - 5.分布式搜索…

【广州华锐互动】列车人员疏散VR虚拟演练系统

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐应用于各个领域。在火车站安全方面&#xff0c;为了提高旅客的安全意识和应对突发事件的能力&#xff0c;列车人员疏散VR虚拟演练系统应运而生。 列车人员疏散VR虚拟演练系统是一种基于虚拟现实技术的教育培训系统&…

【Vue】day03-VueCli(脚手架)

day03 一、今日目标 1.生命周期 生命周期介绍 生命周期的四个阶段 生命周期钩子 声明周期案例 2.综合案例-小黑记账清单 列表渲染 添加/删除 饼图渲染 3.工程化开发入门 工程化开发和脚手架 项目运行流程 组件化 组件注册 4.综合案例-小兔仙首页 拆分模块-局部…

SpringBoot 如何使用 MockMvc 进行 Web 集成测试

SpringBoot 如何使用 MockMvc 进行 Web 集成测试 介绍 SpringBoot 是一个流行的 Java Web 开发框架&#xff0c;它提供了一些强大的工具和库&#xff0c;使得开发 Web 应用程序变得更加容易。其中之一是 MockMvc&#xff0c;它提供了一种测试 SpringBoot Web 应用程序的方式&…

什么是神经网络?

我们常常使用深度学习来指训练神经网络的过程。 在这里举一个房屋价格预测的例子&#xff1a;假设有一个数据集&#xff0c;它包含了六栋房子的信息。所以&#xff0c;你知道房屋的面积是多少平方米&#xff0c;并且知道这个房屋的价格。这是&#xff0c;你想要拟合一个根据房屋…

【论文阅读】DQnet: Cross-Model Detail Querying for Camouflaged Object Detection

DQnet: Cross-Model Detail Querying for Camouflaged Object Detection DQnet&#xff1a;伪装目标检测中的跨模型细节查询 论文地址&#xff1a;https://arxiv.org/abs/2212.08296 这篇文章提出了一个交叉模型框架&#xff08;CNN-Transformer并行&#xff09;来检测伪装目…

【自启动配置】Ubuntu 设置开机自启动脚本

Ubuntu 开机运行的脚本和当前操作系统运行的级别有关&#xff0c;OS 的运行级别大概分为七个 目录 1、查看 OS 运行级别 2、创建自启动脚本 3、添加软链接 1、查看 OS 运行级别 输入命令 runlevel 查看当前系统运行级别。当前系统的运行级别为 5 2、创建自启动脚本 在 /et…

实训笔记7.19

实训笔记7.19 7.19一、座右铭二、Hadoop的HDFS分布式文件存储系统的相关原理性内容2.1 HDFS上传数据的流程2.2 HDFS下载数据的流程2.3 HDFS中NameNode和SecondaryNameNode工作机制&#xff08;涉及到HDFS的元数据管理操作&#xff09;2.4 HDFS中NameNode和DataNode的工作机制&a…

小程序自定义步骤条实现

效果展示&#xff1a; 支持背景颜色自定义 <view class"hl_steps"><view class"hl_steps_item" wx:for"{{steps}}" wx:key"id"><view class"hl_steps_item_circle_out" style"background-color: {{col…

【SpringCloud Alibaba】(二)微服务环境搭建

1. 项目流程搭建 整个项目主要分为 用户微服务、商品微服务和订单微服务&#xff0c;整个过程模拟的是用户下单扣减库存的操作。这里&#xff0c;为了简化整个流程&#xff0c;将商品的库存信息保存到了商品数据表&#xff0c;同时&#xff0c;使用商品微服务来扣减库存。小伙…

「苹果安卓」手机搜狗输入法怎么调整字体大小及键盘高度?

手机搜狗输入法怎么调整字体大小及键盘高度&#xff1f; 1、在手机上准备输入文字&#xff0c;调起使用的搜狗输入法手机键盘&#xff1b; 2、点击搜狗输入法键盘左侧的图标&#xff0c;进入更多功能管理&#xff1b; 3、在搜狗输入法更多功能管理内找到定制工具栏&#xff0c…

[数据结构 -- C语言] 二叉树(BinaryTree)

目录 1、树的概念及结构 1.1 树的概念 1.2 树的相关概念&#xff08;很重要&#xff09; 1.3 树的表示 2、二叉树的概念及结构 2.1 概念 2.2 特殊二叉树 2.3 二叉树的性质&#xff08;很重要&#xff09; 2.4 练习题 2.5 二叉树的存储结构 2.5.1 顺序存储 2.5.2 链…

Jenkins报警机制的配置与Linux的使用总结

先在钉钉中添加一个机器人 在Configure System中找到机器人选项&#xff0c;并且复制webhook到网络钩子&#xff0c;然后添加机器人的编号、名称和关键词&#xff0c;然后点击测试&#xff0c;如果显示测试成功则表示配置成功&#xff0c;最后保存 再到配置中勾选顶顶机器人的定…

【CMU15-445 FALL 2022】Project #1 - Buffer Pool

About 实验官网 Project #1 - Buffer Pool在线评测网站 gradescope Lab Task #1 - Extendible Hash Table 详见——【CMU15-445 FALL 2022】Project #1 - Extendable Hashing 如果链接失效&#xff0c;请查看当前平台我之前发布的文章。 Task #2 - LRU-K Replacement Polic…

YOLOv5基础知识

定位和检测: 定位是找到检测图像中带有一个给定标签的单个目标 检测是找到图像中带有给定标签的所有目标 图像分割和目标检测的区别&#xff1a; 图像分割即为检测出物体的完整轮廓&#xff0c;而目标检测则是检测出对应的目标。&#xff08;使用框框把物体框出来&#xff…

SAP客制化区域菜单和IMG配置清单

1. 自定义区域菜单 事务代码 SE43&#xff0c;操作如下 添加菜单对象 展示效果 输入区域菜单名称并回车&#xff0c;效果如下 2. 自定义IMG配置 事务代码 SIMGH IMG structure 示例-事务代码入口 示例-表格维护入口 示例-自定义代码控制对象 需要创建dummy表并设置表维护 页面设…

Progressive Dual-Branch Network for Low-Light Image Enhancement 论文阅读笔记

这是22年中科院2区期刊的一篇有监督暗图增强的论文 网络结构如下图所示&#xff1a; ARM模块如下图所示&#xff1a; CAB模块如下图所示&#xff1a; LKA模块其实就是放进去了一些大卷积核&#xff1a; AFB模块如下图所示&#xff1a; 这些网络结构没什么特别的&#xf…