Сумма трех первых и последних чисел
Я пытаюсь самостоятельно написать программу, которая разбивает шестизначное число на два трехзначных, затем складывает цифры в этих числах и сравнивает полученные суммы.
Однако, у меня получается бесконечный цикл. Подскажите, что подправить, только пожалуйста, без значительных изменений.
int happyNum = 123402;
int sumOne = happyNum % 1000;
int sumTwo = happyNum / 1000;
int sum1 = 0;
int sum2 = 0;
while (happyNum != 0) {
sum1 += sumOne % 10;
sumOne /= 10;
sum2 += sumTwo % 10;
sumTwo /= 10;
}
if (sum1 == sum2) {
System.out.println("Число " + happyNum + " является счастливым");
System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Решение с циклом for
и переменной p
для степени 10:
int happyNum = 123402;
int a = happyNum / 1000, b = happyNum % 1000;
int sum1 = 0, sum2 = 0;
for (int p = 1; p < 1000; p *= 10) {
sum1 += a / p % 10;
sum2 += b / p % 10;
}
if (sum1 == sum2) {
System.out.println("Число " + happyNum + " является счастливым");
System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}
Решение с циклом while
, без отдельной переменной p
, в цикле будут изменяться старшие разряды a
и младшие разряды b
:
int happyNum = 123402;
int a = happyNum / 1000, b = happyNum % 1000;
int sum1 = 0, sum2 = 0;
while (a != 0 || b != 0) {
sum1 += a % 10;
sum2 += b % 10;
a /= 10;
b /= 10;
}
if (sum1 == sum2) {
System.out.println("Число " + happyNum + " является счастливым");
System.out.println("Сумма цифр ABC = " + sum1 + " , а сумма DEF = " + sum2);
}