java 欧拉定理及原根的计算

本文介绍了Java中欧拉定理和原根的概念,并提供了算法实现。欧拉函数φ(x)用于计算小于n且与n互质的数目的数目,欧拉定理在数论中涉及同余问题。文章还探讨了如何利用算法找到模数的原根,包括暴力枚举和通过质因数分解优化的方法。
摘要由CSDN通过智能技术生成

java很少要用到非常复杂的算法,因为这门语言被创建就不是为了表述数学概念或是计算算法的。但有很多知识已经更偏向于算法概念,而且我们必须掌握。因为如果你一点都不了解,当面试官问你有关数论的问题的时候你只能说“不会”,如果你掌握了一些基础概念,做简单数论题目不会太费力,但是如果你对同余原根欧拉函数扩展阿基米德贝祖等式这些概念一点了解都没有,那你连思考的权利都没有了,当别人飞快的打代码时,你连题目都看不懂。

小于n且与n互质的数目 欧拉函数


精挑细选后,我们从欧拉函数开始学起,因为欧拉函数比较容易理解,且不涉及其他概念,而其他知识点会用到欧拉函数。欧拉函数φ(x)表示:对于正整数x,存在正整数a满足:x>a且(x,a)=1的a的数目。注:φ(1)=1。

(x,a)=1等价于gcd(x,a)=1,表示x和a的最大公因数为1,即x与a互质。

欧拉函数fai(x)表示:对于正整数x,存在正整数a满足:x>a且(x,a)=1的a的数目。
欧拉函数通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)…(1-1/pn)
其中p1、p2、p3…pn是x的不同质因数,x为正整数。

特殊性质:

  1. 除了φ(2)=1,当x为偶数时,φ(x)均为偶数。
  2. 欧拉函数是积性函数:如果(n,m)=1,φ(n*m)=φ(n)*φ(m)。
  3. 当x为奇数时,φ(2x)=φ(x)。
  4. 当x为素数时,φ(x)=x-1。

欧拉函数为我们阐释了一个快速求比n小且与n互素的数字数目的方法。欧拉函数有什么用呢?单独来说还没有什么用,但是别担心,欧拉函数很快会被用到其他更加复杂的定理与公式中。

那我们如何用代码实现欧拉函数呢?正确的做法是从通式入手,对于通式φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)…(1-1/pn),我们将每个括号中的内容通分,通过循环判断x的最小质因数,将保存结果的变量减去该质因数除以x,之后再用一个while循环,将x相同的质因数全部除去。

import java.util.Scanner;

public class Main {

    public static void 
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值