So berechnete ich die digitale Wurzel einer ganzen Zahl.Digital Root berechnen, gibt es einen besseren Weg?
import acm.program.*;
public class Problem7 extends ConsoleProgram
{
public void run()
{
println("This program calculates the digital root of an interger.");
int num = readInt("Enter the number: ");
int sum = 0;
while (true)
{
if (num > 0)
{
int dsum = num % 10;
num /= 10;
sum += dsum;
}
else if (sum > 9)
{
int dsum = sum % 10;
sum /= 10;
sum += dsum;
} else if (sum <= 9) break;
}
println("Digital Root is: " + sum);
}
Das Programm funktioniert gut.
Gibt es einen besseren/kürzeren Weg zur Berechnung der digitalen Wurzel einer Zahl. ?
EDIT/ADDED: Hier wird die Implementierung des obigen Problems ist die Verwendung von Tyler ‚s Antwort, es funktioniert auch:
import acm.program.*;
public class Problem7 extends ConsoleProgram
{
public void run()
{
println("This program calculates the digital root of an interger.");
int num = readInt("Enter the number: ");
println("Digital Root of " + num + " is: " + (1 + (num - 1) % 9));
}
}
Als ich google suchte, fand ich das (1 + (Nummer - 1)% 9). Ich werde es versuchen. –
Für Hausaufgaben müssen Sie diese Zauberformel jedoch beweisen/erklären. – Thilo
Das funktioniert großartig, aber wie kommen die Leute mit solchen Algos aus? –