Java 1-100000友好数字之和(AP CS-A)
我们今天在课堂上的任务是找出1-100000之间所有友好数字的总和Java 1-100000友好数字之和(AP CS-A),java,Java,我们今天在课堂上的任务是找出1-100000之间所有友好数字的总和 int sum = 0; for(int i = 1; i < 100000; i++ ) { int a = 1; for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { if (j == (i / j))
int sum = 0;
for(int i = 1; i < 100000; i++ ) {
int a = 1;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
if (j == (i / j))
a += j;
else
a += (j + i / j);
}
}
int b = 1;
for (int j = 2; j <= Math.sqrt(a); j++) {
if (a % j == 0) {
if (j == (a / j))
b += j;
else
b += (j + a / j);
}
}
if(a==b) sum += a;
}
System.out.println(sum);
int和=0;
对于(int i=1;i<100000;i++){
INTA=1;
对于(int j=2;j,可以使用布尔数组跟踪已计算的值。下面是一个有效的解决方案:
boolean[] arr = new boolean[100000];
for(int i = 1; i < 100000; i++ ) {
int a = 1;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
if (j == (i / j))
a += j;
else
a += (j + i / j);
}
}
int b = 1;
for (int j = 2; j <= Math.sqrt(a); j++) {
if (a % j == 0) {
if (j == (a / j))
b += j;
else
b += (j + a / j);
}
}
if(i == b && i != a) {
if(!arr[i])
arr[i] = true;
if(!arr[b])
arr[b] = true;
}
}
int sum = 0;
for(int i = 0; i < arr.length; i++) {
if(arr[i] == true) {
sum += i;
}
}
System.out.println(sum);
boolean[]arr=new boolean[100000];
对于(int i=1;i<100000;i++){
INTA=1;
对于(int j=2;j)非常感谢您提供的解决方案,男士!工作非常有魅力!