Суммирование цифр в трехзначных числах
Напишите функцию, которая для заданного трехзначного натурального числа X вычисляет количество трехзначных натуральных чисел, меньших X, сумма цифр которых кратна 13-ти.
Входные данные Выходные данные
999
72
Вот код:
package javaapplication6;
import java.util.Scanner;
public class JavaApplication6 {
int number;
int su = 0;
int count = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
JavaApplication6 person = new JavaApplication6();
int sum = sc.nextInt();
int i = 100;
while (sum > i) {
i = i + 1;
if (i % 13 == 0) {
person.sum2();
}
}
System.out.println(person.sum2());
}
public int sum2() {
return count++;
}
}
Ввожу число 999, насчитывает 70 чисел, а должно быть 72, в чем может быть ошибка?
Ответы (3 шт):
Автор решения: AVRamones
→ Ссылка
while (sum > i) {
i = i + 1;
int x = i / 100;
int y = i % 100 / 10;
int z = i % 10;
if ((x + y + z) % 13 == 0){
person.sum2();
}
Автор решения: Raven-Vitos
→ Ссылка
На всякий случай весь код:
package javaapplication6;
import java.util.Scanner;
public class JavaApplication6 {
int number;
int su = 0;
int count = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
JavaApplication6 person = new JavaApplication6();
int sum = sc.nextInt();
int i = 100;
while (sum > i) {
i = i + 1;
int x = i / 100;
int y = i % 100 / 10;
int z = i % 10;
if ((x + y + z) % 13 == 0) {
person.sum2();
}
}
System.out.println(person.sum2());
}
public int sum2() {
return count++;
}
}
Результат: 72
Автор решения: Nikitos_2323
→ Ссылка
Спасибо за ответы, вот можно еще так решить:
import java.util.Scanner;
public class JavaApplication6 {
int number;
int count = 0;
int i = 0;
int su = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
JavaApplication6 person = new JavaApplication6();
int sum = sc.nextInt();
int count2 = 0;
int i = 99;
while (sum - 1 > i) {
i = i + 1;
person.i = i;
person.sum2();
person.sum0();
}
System.out.println(person.count);
}
public int sum0() {
if (su % 13 == 0) {
count++;
}
su = 0;
return count;
}
public void sum2() {
while (i != 0) {
//Суммирование цифр числа
su += (i % 10);
i /= 10;
}
}
}