Die Aufgabe ist solche
Sei d(n) definiert als die Summe der echten Teiler von n (Zahlen kleiner als n, die n ohne Rest teilen).
Wenn d(a) = b und d(b) = a, wobei a ≠ b, dann sind a und b ein befreundetes Paar, und sowohl a als auch b werden befreundete Zahlen genannt.
Beispiel: Die echten Teiler von 220 sind 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 und 110; somit ist d(220) = 284. Die echten Teiler von 284 sind 1, 2, 4, 71 und 142; somit ist d(284) = 220.
Bilden Sie die Summe aller befreundeten Zahlen unter 10000.
Als Ausgabe erhalte ich 0. Ich habe schon versucht mit dem Debugger nach Fehlern zu suchen, was leider erfolglos war.
Sei d(n) definiert als die Summe der echten Teiler von n (Zahlen kleiner als n, die n ohne Rest teilen).
Wenn d(a) = b und d(b) = a, wobei a ≠ b, dann sind a und b ein befreundetes Paar, und sowohl a als auch b werden befreundete Zahlen genannt.
Beispiel: Die echten Teiler von 220 sind 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 und 110; somit ist d(220) = 284. Die echten Teiler von 284 sind 1, 2, 4, 71 und 142; somit ist d(284) = 220.
Bilden Sie die Summe aller befreundeten Zahlen unter 10000.
Java:
package ProjectEuler21;
public class Main {
public static void main(String[] args) {
berechneBefreundeteZahlen(10000);
}
public static void berechneBefreundeteZahlen(int limit) {
var result = 0;
for (var i = 1; i < limit; i++) {
var a = 0;
var b = 0;
for (var j = 1; j < i; j++) {
a = a % j == 0 ? a + j : a;
}
for (var k = 1; k < a; k++) {
b = a % k == 0 ? b + k : b;
}
result = a == b ? result + a + b : result;
}
System.out.println(result);
}
}