これは、整数のデジタルルートを計算する方法です。デジタルルートを計算すると、より良い方法はありますか?
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);
}
プログラムが正常に動作します。
数値のデジタルルートを計算する方法が改善されていますか? ?
EDIT /コメントを追加しました:ここにTylerの答えを使用して、上記の問題の実装である、それは同様に動作します
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));
}
}
Googleを検索したとき、私はこれを見つけました(1 +(number-1)%9)。病気を試してみてください。 –
宿題の場合、あなたはその魔法の数式を証明して説明する必要があります。 – Thilo
これは素晴らしいですが、人々はどのようにそのような藻類を出すのですか? –