@Java
大家好,我是Ziph!
题目:
两个不同的自然数a和b,如果整数a的全部因子(包含1,不含a本身)之和等于b;且整数b的全部因子(包含1,不含b本身)之和等于a,则整数a和b称为亲密数。求3000以内的全部亲密数
import java.util.Scanner;
public class Factor {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("你要打印多少以内的亲密数:");
int num = sc.nextInt();
for(int a = 2; a < num; a++) {//a = 2,因为1是因子
int b = sum(a);
if (sum(b) == a && a < b) {//a < b是将a、b排序,把重复的数排除
System.out.println(a + "的亲密数是:" + b);
}
}
}
//计算此数所有因子的和
public static int sum(int n) {
int sum = 0;
for(int i = 1; i <= n / 2; i++){
if(n % i == 0){
sum += i;
}
}
return sum;
}
}
执行结果:
有问题请留言回复!