
用Java编程找亲密数对 100
亲密数对是指这样的两个不等的自然数X与Y:X所有因子(除去1和自身X外)之和等于Y,同样Y所有因子之和等于X。如48与75就是一组亲密数对,编程求出并输出【2,1000】...
亲密数对是指这样的两个不等的自然数X与Y:X所有因子(除去1和自身X外)之和等于Y,同样Y所有因子之和等于X。如48与75就是一组亲密数对,编程求出并输出【2,1000】范围之内的所有亲密数对。
展开
1个回答
展开全部
import java.util.*;
public class Main{
public static void main (String [] args) {
boolean [] found = new boolean[1001];
int t;
for (int i = 2; i < 1000; i++) {
if (!found[i]) {
t = find(i);
found[i] = true;
if (t <= 1000) found[t] = true;
if (find(t) == i)
System.out.printf("%d, %d\n", i, t);
}
}
}
private static int find (int n) {
int result = 0;
for (int i = 2; i < n; i++)
if (n % i == 0)
result += i;
return result;
}
}
注意,此题中的亲密数定义似乎和传统的定义不一样,此题中是除去1和自身,而传统的定义是包括1。
我的输出是
48, 75
140, 195
追问
少很多对啊
追答
请说明一下应该有哪些,少了多少对。这个亲密数本来就没几对,程序应该也没错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询