用java写一段程序公寓以下内容:古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284。 而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。 你的任务就编写一个程序,判断给定的两个数是否是亲和数
时间: 2023-12-31 17:03:30 浏览: 140
用java判断是不是数字
好的,这是一个Java程序,可以实现你的要求:
```java
import java.util.Scanner;
public class AmicableNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个数:");
int num2 = scanner.nextInt();
if (isAmicable(num1, num2)) {
System.out.println(num1 + "和" + num2 + "是亲和数");
} else {
System.out.println(num1 + "和" + num2 + "不是亲和数");
}
}
// 判断两个数是否是亲和数
public static boolean isAmicable(int num1, int num2) {
int sum1 = sumOfProperDivisors(num1);
int sum2 = sumOfProperDivisors(num2);
return (sum1 == num2 && sum2 == num1); // 如果num1的约数之和等于num2,并且num2的约数之和等于num1,则为亲和数
}
// 计算一个数的所有真约数之和
public static int sumOfProperDivisors(int num) {
int sum = 0;
for (int i = 1; i <= num / 2; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
}
```
程序中使用了 `Scanner` 类来读取用户输入的两个数,使用了 `isAmicable` 方法来判断两个数是否是亲和数,具体实现就是分别计算每个数的真约数之和,然后进行比较。`sumOfProperDivisors` 方法用于计算一个数的所有真约数之和,即不包括自身的约数之和。
阅读全文