java编写欧拉函数
时间: 2024-10-04 21:00:49 浏览: 27
Java基本函数.pdf
在Java中,欧拉函数φ(n)也被称为欧拉 totient 函数,它表示不大于n的所有正整数中与n互质(即最大公约数为1)的数的数量。这个函数在密码学、数论等领域有重要应用,特别是在生成安全的公钥和私钥对时。
以下是一个简单的Java函数,用于计算给定正整数n的欧拉函数值:
```java
public class EulerFunction {
public static int eulerPhi(int n) {
if (n <= 0) {
throw new IllegalArgumentException("Input must be a positive integer");
}
// 初始化结果为n,因为所有小于等于n的正整数都与n本身互质
int phi = n;
// 遍历从2到sqrt(n),如果i是n的因子,则n/i和i互质,所以要减去i和n/i的phi值
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
if (i * i != n) { // 如果i不是n的平方根,则同时包含两个因子
phi -= phi / i;
}
phi -= phi / (n / i); // 否则只包含一个因子i
}
}
// 对于n本身就是质数的情况,需要加上1,因为它只有一个因子1
if (n > 2 && isPrime(n)) {
phi++;
}
return phi;
}
private static boolean isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 示例:计算并打印50的欧拉函数值
public static void main(String[] args) {
int number = 50;
System.out.println("Euler's totient function of " + number + " is: " + eulerPhi(number));
}
}
```
阅读全文