欧拉函数-求解互质数(Java)

  • 欧拉函数

介绍

欧拉函数(Euler's Totient Function)是一个在数论中非常重要的函数,通常用符号φ(n)表示。对于正整数n,欧拉函数φ(n)定义为小于等于n且与n互质的正整数的个数。
例如,当n=8时,与8互质的正整数是1, 3, 5, 7,因此φ(8) = 4

性质:

欧拉函数有许多有用的性质,其中一些包括:
1. 若p为质数,则φ(p) = p - 1。这是因为质数p的所有小于p的正整数都与p互质。
2. 若m和n互质,则φ(mn) = φ(m)φ(n)。这是欧拉函数的乘性性质。
3. 对于任意正整数n,欧拉函数满足以下的递归关系式:若n可以分解为素数因子的乘积,则φ(n) = n(1 - 1/p1)(1 - 1/p2)...(1 - 1/pk),其中p1, p2, ..., pk是n的不同素因子。

Java实现:

  1. 初始化结果为n。
  2. 对n进行质因数分解,从2开始逐个检查可能的质因数i。
  3. 如果当前数能够整除n,则说明i是n的一个质因数,进入循环,不断将n除以i,直到不能整除为止,排除掉n中所有的i因数。
  4. 更新result,减去由i引起的不同的因子个数,即result除以i的整数部分。
  5. 处理剩余的质因数,如果n大于1,说明n本身就是一个质数,更新result,减去由n引起的不同的因子个数,即result除以n的整数部分。
  6. 返回最终计算结果。
举例
n = 15
n % 2=0 表明2不是n的因数
n % 3 == 0 表明3是n的因数n/3 = 5result = result - result / 3 表明小于n的质因数不是3的倍数/*由于 4 * 4大于15,因而4之后的元素要么重复,要么不是15的质因数,即i*i <= n解释:对于p * q = n 必然存在一个较大的p和一个较小的q(或者二者相等,若q*q大于n则p和q一定不是n的质数)*/
剩余较大的因数n = 5result = result - result / 5为最终结果private static long Euler(long n) {// 计算欧拉函数值long result = n; // 初始化结果为n// 对n进行质因数分解for (long i = 2; i * i <= n; i++) { // 从2开始逐个检查可能的质因数if (n % i == 0) { // 如果当前数能够整除n,即i是n的一个质因数while (n % i == 0) { // 循环直到n不能再被i整除为止,排除掉n中所有的i因数n /= i; // 不断将n除以i,直到不能整除为止}result = result - result / i; // 更新result,减去由i引起的不同的因子个数,即result除以i的整数部分}}// 处理剩余的质因数if (n > 1) { // 如果n本身就是一个质数result = result - result / n; // 更新result,减去由n引起的不同的因子个数,即result除以n的整数部分}return result; // 返回最终计算结果
}

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

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

相关文章

万字长文:FineBI面试题及参考答案详解

1:FineBI的基本概念是什么? FineBI是帆软软件有限公司推出的一款商业智能产品。它的核心功能是通过分析企业已有的信息化数据,帮助企业发现并解决存在的问题,预测模拟企业将来的发展,并协助企业及时调整策略做出更好的决策,增强企业的可持续竞争性。 2:描述FineBI的使…

node中可以使用js的三个模块dom,bom,ecmSrimpt吗

在Node.js环境中&#xff0c;不能直接使用浏览器提供的Document Object Model (DOM)和Browser Object Model (BOM)&#xff0c;因为这两个概念是浏览器特有的API集合&#xff0c;它们与浏览器的用户界面、窗口管理、事件处理、文档结构操作等功能紧密关联&#xff0c;专为浏览器…

基于Vue的权限管理方案(大体流程设计)

基于Vue的权限管理方案 在前端开发中&#xff0c;实现权限管理是保障系统安全和数据合规的重要手段之一。基于Vue框架&#xff0c;我们可以设计一套完整的权限管理方案&#xff0c;包括路由级别、片段&#xff08;类似tab切换中的sheet&#xff09;和按钮权限的控制。下面详细…

如何系统地自学Python?一份完整的学习指南

Python 是一种简单而强大的编程语言&#xff0c;被广泛应用于数据科学、人工智能、Web 开发等领域。对于想要自学 Python 的人来说&#xff0c;一个系统化的学习计划是非常重要的。在本文中&#xff0c;我将分享一份完整的学习指南&#xff0c;帮助你系统地自学 Python。 1. 学…

hive 数据库表常用操作及相关函数讲解

创建数据库并指定hdfs存储位置 create database myhive2 location ‘/myhive2’; 使用location关键字&#xff0c;可以指定数据库在HDFS的存储路径。 Hive的库在HDFS上就是一个以.db结尾的目录 默认存储在&#xff1a; /user/hive/warehouse内 当你为Hive表指定一个LOCATION时…

NumPy入门(一)

NumPy入门(一) 工具: jupyter notebook jupyter notebook 功能 : 数据处理 &#xff08;python 处理数据功能&#xff09; coding文字型的描述 富文本 word可视化支持 官网: https://jupyter.org/ 启动命令 jupyter notebook 1.1 numpy简介 Python的拓展库, 提供数据对象 nda…

【数据下载】SODA数据更新至2022并教学下载

【数据下载】SODA数据更新至2022并教学下载 我为什么那么喜欢使用SODA数据&#xff1f; 就是三维网格化的数据&#xff0c;好用。 但是需要高分辨率还是需要找别的。 以前分享过SODA数据下载&#xff0c;但上次版本过于凌乱。因此重新借助更新再分享一次&#xff0c;不为过。…

JavaScript的事件监听

事件监听是计算机编程中的一个重要概念&#xff0c;特别是在图形用户界面&#xff08;GUI&#xff09;编程和网络编程中。它涉及到设置一个或多个监听器&#xff08;也称为事件处理器或回调函数&#xff09;等待特定事件的发生&#xff0c;并在事件发生时执行相应的操作或响应。…

MySQL数据库——6、删除数据表

在 MySQL 数据库删除数据表 删除一个数据表&#xff0c;使用 SQL 命令 DROP TABLE。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name; table_name 是要删除的数据表的名称。 例如&#xff0c;要删除名为 users 的数据表&#xf…

Android 14 vold 分析(2)VolumeManager 和 NetlinkManger

3. VolumeManager::Instance() 和 VolumeManager::start() system/vold/VolumeManager.cpp 3.1 Instance()没啥好说的 非常简单 112 VolumeManager* VolumeManager::Instance() {113 if (!sInstance) sInstance new VolumeManager();114 return sInst…

人脸识别业务(基于腾讯人脸识别接口)

使用腾讯云人脸识别接口&#xff0c;基于优图祖母模型。 一、准备工作 人脸识别账号 申请腾讯云服务器账号&#xff0c;生成自己的秘钥。记录秘钥和秘钥ID。 创建人员库 记下人员库id 在配置文件application.yml中添加配置。 plateocr:SecretId: 秘钥IDSecretKey: 秘钥ser…

红队内网攻防渗透:内网渗透之域内横向移动攻击技术

红队内网攻防渗透 常用windows远程连接和相关命令1.IPC1.首先建立一个IPC连接2.net use 查看当前连接3.ipc\$利用条件:4.ipc\$连接失败原因:5.常见错误号:2.ipc连接获取远程主机信息1.dir列出远程主机文件2.tasklist命令列出目标主机上运行的进程3.IPC计划任务攻击流程at命令…

Day1 省选衔接题 思路总结

Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为&#xff1a;每次都取走当前值最大的且可取的数&#xff0c;并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex​ 表示 x x …

Path Aggregation Network for Instance Segmentation

PANet 摘要1. 引言2.相关工作3.框架 PANet 最初是为 proposal-based 实例分割框架提出来的&#xff0c;mask 是实例的掩码&#xff0c;覆盖了物体包含的所有像素&#xff0c;proposal 在目标检测领域是可能存在目标的区域。在实例分割中&#xff0c;首先利用RPN(Region Proposa…

深入理解Java中的字段与属性的区别

1、Java中的属性和字段有什么区别&#xff1f; 答&#xff1a;Java中的属性(property)&#xff0c;通常可以理解为get和set方法。 而字段(field)&#xff0c;通常叫做“类成员”&#xff0c;或 "类成员变量”&#xff0c;有时也叫“域”&#xff0c;理解为“数据成员”&…

c语言字符串函数(模拟实现)

用递归的方式完成strlen int my_len(const char* str) { static int count; assert(str);//能够判断为不为空指针 if (*str ! \0) { my_len(str); return count; } else { count 0; return count;;//真正的strlen是unsi…

练习题(2024/4/10)

1. 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…

2022年蓝桥杯省赛——直线

目录 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路如下 代码实现 坑来喽~~ 导致这个BUG的原因&#xff01;&#xff01;&#xff01; 总结 整体的 两种b的情况对比数据 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描…

一文搞懂计算机视觉模型

计算机视觉&#xff0c;这个曾经让科学家们望而生畏的领域&#xff0c;如今在深度学习的加持下&#xff0c;正迎来前所未有的发展。你是否好奇&#xff0c;是哪些深度学习模型让计算机拥有了“慧眼”&#xff1f;让我们一起揭开这些模型的神秘面纱。 /1 卷积神经网络 (CNNs)。…