<i id='QjSwB'><tr id='QjSwB'><dt id='QjSwB'><q id='QjSwB'><span id='QjSwB'><b id='QjSwB'><form id='QjSwB'><ins id='QjSwB'></ins><ul id='QjSwB'></ul><sub id='QjSwB'></sub></form><legend id='QjSwB'></legend><bdo id='QjSwB'><pre id='QjSwB'><center id='QjSwB'></center></pre></bdo></b><th id='QjSwB'></th></span></q></dt></tr></i><div id='QjSwB'><tfoot id='QjSwB'></tfoot><dl id='QjSwB'><fieldset id='QjSwB'></fieldset></dl></div>
    <tfoot id='QjSwB'></tfoot>
  • <small id='QjSwB'></small><noframes id='QjSwB'>

    • <bdo id='QjSwB'></bdo><ul id='QjSwB'></ul>

      1. <legend id='QjSwB'><style id='QjSwB'><dir id='QjSwB'><q id='QjSwB'></q></dir></style></legend>

        Java欧拉函数的计算代码详解

        时间:2023-12-11
          <bdo id='Wjjwx'></bdo><ul id='Wjjwx'></ul>
        • <i id='Wjjwx'><tr id='Wjjwx'><dt id='Wjjwx'><q id='Wjjwx'><span id='Wjjwx'><b id='Wjjwx'><form id='Wjjwx'><ins id='Wjjwx'></ins><ul id='Wjjwx'></ul><sub id='Wjjwx'></sub></form><legend id='Wjjwx'></legend><bdo id='Wjjwx'><pre id='Wjjwx'><center id='Wjjwx'></center></pre></bdo></b><th id='Wjjwx'></th></span></q></dt></tr></i><div id='Wjjwx'><tfoot id='Wjjwx'></tfoot><dl id='Wjjwx'><fieldset id='Wjjwx'></fieldset></dl></div>
                <legend id='Wjjwx'><style id='Wjjwx'><dir id='Wjjwx'><q id='Wjjwx'></q></dir></style></legend>

                <tfoot id='Wjjwx'></tfoot>

                    <tbody id='Wjjwx'></tbody>

                  <small id='Wjjwx'></small><noframes id='Wjjwx'>

                1. 首先介绍下欧拉函数的定义:

                  欧拉函数,又称为“φ函数”,表示小于等于n的正整数中有多少个与n互质。记做φ(n)。

                  Java中计算欧拉函数的代码如下(假设要计算的数为n):

                  public static int eulerFunction(int n) {
                      int res = n;
                      for (int i = 2; i * i <= n; i++) {
                          if (n % i == 0) {
                              res = res / i * (i - 1);
                              while (n % i == 0) {
                                  n /= i;
                              }
                          }
                      }
                      if (n > 1) {
                          res = res / n * (n - 1);
                      }
                      return res;
                  }
                  

                  这段代码中,我们需要对n的每个质因数i进行操作,res就是最终结果,初始值为n本身,然后对于每个i:

                  • 如果i是n的质因数,我们需要将res除以i,然后乘上i-1,这是因为对于每个i,该质因数与n的其他质因数都互斥,我们只需要将互斥的质因数个数乘起来即可。同时,我们需要将n变为n/i的值,因为我们已经统计了i这个质因数。
                  • 如果i不是n的质因数,我们什么都不用做,继续找下一个质因数。

                  最后,如果n最终仍然大于1,由于n是质因数,所以直接将res除以n,然后乘上n-1即可。

                  示例1:计算n为10的欧拉函数,即φ(10)。

                  用上面的代码进行计算,得到res的初始值为10。然后我们发现2是10的一个质因数,于是执行如下操作:

                  res = res / 2 * (2 - 1);  // res变为5
                  n = 10 / 2;  // n变为5
                  

                  接着我们发现3不是10的质因数,继续往下找,发现5是10的质因数,于是执行如下操作:

                  res = res / 5 * (5 - 1);  // res变为4
                  n = 5 / 5;  // n变为1
                  

                  此时n已经为1了,循环结束,最终结果为4,即φ(10)=4。

                  示例2:计算n为21的欧拉函数,即φ(21)。

                  用上面的代码进行计算,得到res的初始值为21。然后我们发现2不是21的质因数,于是继续往下找,发现3是21的一个质因数,于是执行如下操作:

                  res = res / 3 * (3 - 1);  // res变为12
                  n = 21 / 3;  // n变为7
                  

                  此时7不是完全平方数,继续往下找,发现7是21的一个质因数,于是执行如下操作:

                  res = res / 7 * (7 - 1);  // res变为6
                  n = 7 / 7;  // n变为1
                  

                  此时n已经为1了,循环结束,最终结果为6,即φ(21)=6。

                  希望上面的解释能够帮到你。

                  上一篇:SpringMVC中controller接收json数据的方法 下一篇:Java构造函数的相互调用代码示例

                  相关文章

                    <bdo id='rh1jV'></bdo><ul id='rh1jV'></ul>

                  <small id='rh1jV'></small><noframes id='rh1jV'>

                  <tfoot id='rh1jV'></tfoot>

                  <i id='rh1jV'><tr id='rh1jV'><dt id='rh1jV'><q id='rh1jV'><span id='rh1jV'><b id='rh1jV'><form id='rh1jV'><ins id='rh1jV'></ins><ul id='rh1jV'></ul><sub id='rh1jV'></sub></form><legend id='rh1jV'></legend><bdo id='rh1jV'><pre id='rh1jV'><center id='rh1jV'></center></pre></bdo></b><th id='rh1jV'></th></span></q></dt></tr></i><div id='rh1jV'><tfoot id='rh1jV'></tfoot><dl id='rh1jV'><fieldset id='rh1jV'></fieldset></dl></div>
                    1. <legend id='rh1jV'><style id='rh1jV'><dir id='rh1jV'><q id='rh1jV'></q></dir></style></legend>