Суммирование цифр в трехзначных числах

Напишите функцию, которая для заданного трехзначного натурального числа 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;
        }
    }
}
→ Ссылка