欧拉 函数

 互质:

互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者特殊情况。

1和-1与所有整数互质,而且它们是唯一与0互质的整数

互质的判断方法:

(1)两个数互质的情况

1)两个不同的质数是互质的。

2)较大数是质数的两个数是互质数

3)相邻的两个自然数是互质数

4)相邻的两个奇数是互质数

5)最大公约数是1,两个数互质

(2)三个或三个以上自然数互质有两种不同的情况

一种是这些成互质数的自然数是两两互质的。如2,3,5

一种不是两两互质的,如6,8,9

 欧拉函数:

一般记作\phi(N),是指1-N中与N互质的数的个数

N看成质因数的乘积形式:N={p_1}^{\alpha_1}{p_2}^{\alpha_2}...{p_k}^{\alpha_k}

其中:p_n代表各个质因子;\alpha_n代表各个质因子的质指数。 

那么\phi(N) = N(1-\frac{1}{p_1})(1-\frac{1}{p_2})(1-\frac{1}{p_3})...(1-\frac{1}{p_k})

step1:

采用分解质因数的方法,分别求出N质因数乘积式中的每一个质因数p_n

分解质因数http://t.csdnimg.cn/Tmf0G

step2:

每第一次遇到一个质因数,就套用公式 res = res/i*(i-1)

(注意:因为公式中不涉及到任何一个质因数的指数,所以 res = res/i*(i-1) 不应该放在while(x%i==0) 之中)

step3:

输出结果

题目如下:

给定 n 个正整数 ai,请你求出每个数的欧拉函数。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个正整数 ai。

输出格式

输出共 n 行,每行输出一个正整数 ai 的欧拉函数。

数据范围

1≤n≤100
1≤ai≤2×109

代码如下:

#include<iostream>
#include<cstring>using namespace std;int n;int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;while(n--){int x;cin >> x;int res = x;//注意res的初始值是x,因为在公式的一开始是N本身for (int i =2 ;i<=x/i;++i){if (x % i == 0){res = res/i * (i-1);//这里注意要先进行除法,再进行乘法//不然会爆掉int//爆掉int后,取值就是超过int最大值的部分,如超过int最大值1//那么爆掉int后的取值就是1while(x % i ==0)x = x/i;}}if (x > 1)res = res/x * (x-1);cout << res << endl;}return 0;
}

(1)公式推导

(2)要先写除法,再写乘法 res = res/i * (i-1) 

 res = res/i*(i-1) res = res*(1-1/i) 是一样的,不过是前者先进行了除法,后者先进行了乘法

(3)res = res/i*(i-1)不应放在while(x%i == 0)之中 

因为欧拉公式中不涉及到任何质因数的指数。

如果将 res = res/i*(i-1) 放到 while(x%i==0) 之中,面对一个质因数p_1的指数是2,那么res最后的答案中就会乘了两次(1-\frac{1}{p_1})

放进 while(x%i==0) 中,质因数的指数就会对结果产生影响

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

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

相关文章

面试(九)

目录 一. 僵尸进程/孤儿进程/守护进程 二 线程的同步和异步 三. 线程间通信 3.1 共享内存 3.2 互斥锁 3.3 条件变量 3.4 信号量 3.5 读写锁 3.6 事件 3.7 线程局部存储 四. 进程间通信 3.1 管道 3.2 消息队列 3.3. 共享内存 3.4 信号量 3.5 套接字 3.6 内存映…

redis的RDB快照配置详解

Redis 的 RDB&#xff08;Redis Database Backup&#xff09;快照是一种数据持久化方式&#xff0c;它可以在指定时间间隔内将内存中的数据快照保存到磁盘。这样&#xff0c;即使Redis服务器意外宕机或重启&#xff0c;数据也能从最近的快照中恢复。RDB快照的配置主要涉及以下几…

如何快速判断Excel中选区跨页?

实例需求&#xff1a;应用开发过程中&#xff0c;需要校验选中区域&#xff0c;要求选中区域不能跨页&#xff0c;即选中区域分布在两个不同的页面中。 示例代码如下。 Sub Demo()Dim rSelect As Range, oHP As HPageBreakDim UpCell As Range, DownCell As RangeSet rSelect…

1500+ HuggingFace API token暴露,使数百万 Meta-Llama、Bloom 等大模型用户面临风险

HugginingFace 和 GitHub 是AI开发人员的重要平台&#xff0c;因此我们决定对这些平台做更为深入的研究。在这项研究中&#xff0c;我们发现了数以千计的 API 令牌&#xff0c;这些令牌暴露给恶意行为者&#xff0c;使数百万最终用户可能受到攻击。 本文的主要内容包括&#x…

【Leetcode 2341 】 数组能形成多少数对 —— 去重

给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums 选出 两个 相等的 整数从 nums 中移除这两个整数&#xff0c;形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长度为 2 的…

MySQL高阶练习题1- 寻找面试候选人

目录 题目 准备数据 分析数据 实现代码 总结 题目 返回 所有面试候选人 的姓名 name 和邮件 mail 。当用户满足以下两个要求中的 任意一条 &#xff0c;其成为 面试候选人 : 该用户在 连续三场及更多 比赛中赢得 任意 奖牌。该用户在 三场及更多不同的 比赛中赢得 金牌&…

python实战三-提取Word数据到Excel

视频源码&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/83db5bb15383 一个文件夹下有大量会议通知文件&#xff0c;为word文件&#xff0c;文件格式都是一致的&#xff0c;现在要将文件中的一些字段提取出来汇总到Excel文件中。 会议通知文件格式如下&#xff1a; 要提…

C++(1)基础语法

C(1)之基础语法 Author: Once Day Date: 2024年8月29日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 参考文…

java中哪些集合可以使用 Iterator 进行遍历

在 JAVA 集合中&#xff0c;分为两种顶层接口&#xff0c;Collection 和 Map。 而 Iterator 是针对 Collection 的。 因此&#xff0c;JAVA 中所有 Collection 的子类都可以使用 Iterator。 像 List、Set、Queue、Deque 都可以使用。 使用例子&#xff1a; List<Integer…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇一

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Windows学习笔记】1:OneCore和Windows API

1 OneCore 主流Windows跑在PC上&#xff0c;Xbox跑的是从Windows 2000分支出来的版本&#xff0c;Windows Phone跑的是基于Windows CE&#xff08;实时操作系统&#xff09;的版本。 为了维护和扩展这些code方便&#xff0c;微软将kernels和base platform集成在一起叫OneCore…

55-java多线程future

java多线程future 在Java中&#xff0c;Future 接口和 Callable 函数式接口一起被用来支持异步计算。Future 表示一个可能完成的异步计算的结果&#xff0c;通过 get 方法可以获取计算的结果。 下面是一个使用 Future 的简单示例&#xff1a; import java.util.concurrent.*…

宿舍|基于SprinBoot+vue的宿舍管理系统(源码+数据库+文档)

宿舍管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&…

【计算机组成原理】六、总线:3.操作和定时

5.操作和定时 文章目录 5.操作和定时5.1总线传输的四个阶段5.2总线定时5.2.1同步通信5.2.2异步通信5.2.3半同步通信5.2.4分离式通信 2.3按时序控制方式 同步总线异步总线 5.1总线传输的四个阶段 总线周期&#xff1a; 申请分配阶段&#xff1a;由需要使用总线的主模块&#…

【C++11及其特性】左值和右值

左值和右值目录 一.左值和右值的报错1.简单定义2.函数返回值作左值3.表达式作左值 二.存储的层次结构1.CPU2.内存3.磁盘4.三者联系5.寄存器 三.左值和右值的概念1.左值2.右值3.转换 一.左值和右值的报错 1.简单定义 赋值号’左边的为左值,右边的为右值. 2.函数返回值作左值 …

kafka ---- producer与broker配置详解以及ack机制详解

一、producer 配置 1、bootstrap.servers kafka broker集群的ip列表&#xff0c;格式为&#xff1a;host1:port1,host2:port2,… 2、client.id 用于追踪消息的源头 3、retries 当发送失败时客户端会进行重试&#xff0c;重试的次数由retries指定&#xff0c;默认值是2147…

检测和处理异常值的方法

异常值检测 不同的方法适用于不同类型的数据和场景。选择合适的异常值检测方法应考虑以下因素&#xff1a; 数据类型&#xff08;连续型、离散型、分类型等&#xff09;。数据分布特征&#xff08;正态分布、非正态分布、多维数据等&#xff09;。数据规模和维度&#xff08;…

力扣刷题(3)

整数反转 整数反转-力扣 思路&#xff1a; 利用%和/不断循环取待反转整数的最后一位&#xff0c;注意判断是否超出范围。 int reverse(int x){int y0;while(x){if(y > INT_MAX/10 || y < INT_MIN/10)return 0;int tmpx%10;yy*10tmp;x/10;}return y; }字符串转换整数 …

自动化代码报错:ElementClickInterceptedException 解决方案

在自动化测试中&#xff0c;如果有多个弹窗出现&#xff0c;代码执行可能会遇到ElementClickInterceptedException的错误&#xff0c;表明元素点击被拦截&#xff1a; 一般由于以下原因&#xff1a; 一、页面加载未完成 在页面尚未完全加载完成时尝试点击某个元素&#xff0c…

ENVI SARscape||笔记

介绍就不介绍了&#xff0c;直入主题&#xff01; 第一章 ENVI和SARscape 下载与安装&#xff1a; ENVI 5.6 软件安装包下载及安装激活教程&#xff01; (qq.com)https://mp.weixin.qq.com/s/kH0g5g9AALgDNPssfdZ8wQ 启动 ENVI 的启动模式有两种&#xff1a;ENVI和ENVIIDL&…