0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 1
1

Дано N. Посчитать количество чисел от 1 до N, которые делятся на сумму своих цифр. Вывести эти числа

03.02.2020, 22:28. Показов 3503. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток, я студент, мне преподаватель дал задание, "Дано число N. Нужно найти числа от 1 до N, которые делятся на сумму своих цифр. Вывести эти числа и их кол-во.". Вроде всё легко и просто, я написал программу (представлена ниже), показал, но препод говорит, что можно сделать гораздо проще, что нужно найти последовательность и логику, буквально в три строчки (утрирую), я сижу, ломаю голову, не понимаю как ещё можно её реализовать. Вот, уже сюда пишу от безнадёжности, надеюсь поможете, спасибо.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.company;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        int N = new Scanner(System.in).nextInt();
        int c = 0;
        int nomer_i, result;
        int[] a = new int[N];
        System.out.println("Числа, делящиеся на сумму своих цифр: ");
        for (int i = 1; i < N; i++) {
            nomer_i = i;
            result = 0;
            while (nomer_i > 0) {
                result += nomer_i % 10;
                nomer_i = nomer_i / 10;
            }
                if (i % result == 0) {
                    System.out.print(i + " ");
                    c++;
                }
            }
            System.out.println("Кол-во чисел: " + c);
        }
 
 
 
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2020, 22:28
Ответы с готовыми решениями:

Вывести шестизначные числа, которые делятся без остатка на сумму квадратов своих цифр
Вывести в 10 столбиков все шестизначные числа, которые делятся без остачи на на сумму квадратов...

Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр
Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр. подсчитать кол-во...

Найти и вывести все трёхзначные числа, которые которые делятся на каждую из своих цифр
Найти и вывести все трёхзначные числа, которые которые делятся на каждую из своих цифр. На ноль...

Дано натуральное семизначное число N. Вывести на экран цифры числа, которые делятся на а без остатка. Определить количество цифр,
Дано натуральное семизначное число N. Вывести на экран цифры числа, которые делятся на а без...

3
1020 / 560 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
04.02.2020, 06:46 2
Ну, могу предложить только решение покрасивше
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Scanner;
 
public class MyClass {
    public static void main(String args[]) {
        int n = 0;
 
        try (Scanner in = new Scanner(System.in)) {
            System.out.print("N = ");
            n = in.nextInt();
        }
        
        doTheDo(n);
    }
    
    private static void doTheDo(int n) {
        int count = 0;
        
        for (int i = 1; i <= n; i++) {
            if (i % sumDigits(i) == 0) {
                System.out.println(i);
                count++;
            }
        }
        
        System.out.println("\nTotal: " + count);
    }
    
    private static int sumDigits(int num) {
        int sum = 0;
        
        while (num != 0) {
            sum += num % 10;
            num /= 10;
        }
        
        return sum;
    }
}


Я чёт не смог найти никакой логики. Такими числами могут быть и простые, и не простые, и чётные, и нечётные, также явной закономерности их появления вроде как нет. Ну, может найдётся кто поумнее
1
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
16411 / 9038 / 2607
Регистрация: 21.10.2017
Сообщений: 20,748
04.02.2020, 08:41 3
Leksi_228, эти числа называются "числа харшад". Загугли, там вроде был какой-то алгоритм, хотя он куда как геморней классического перебора.
1
2442 / 1898 / 475
Регистрация: 17.02.2014
Сообщений: 9,154
04.02.2020, 09:53 4
для простоты возм. 2-х значные:
(10a + b)/(a + b) = k + z; k - целое, z - остаток.
10a + b = k(a + b);
10a - ka = kb - b;
a(10 - k) = b(k - 1);
b = a * (10 - k)/(k - 1);
b = (10 - k) * a/(k - 1); т.е. для двузначных чисел k может принимать значение от 2 до 10, для каждого а.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2020, 09:53
Помогаю со студенческими работами здесь

Найти числа, которые делятся без остатка на сумму своих цифр
Как єто сделать? Используя функцию Sum Digits, разработайте программу, выводит в порядке...

Найдите количество чисел из отрезка [l, r], которые делятся на произведение своих цифр
Написал программу, но не работает. В чем ошибка? var i,l,r,s,a,t,k:longint; begin k:=0; ...

Найти количество трехзначных чисел, которые делятся на каждую из своих цифр
Задача Состаить алгоритм нахождения количества всех трехзначных чисел, которые делятся на каждую...

Вывести все трехзначные числа, которые делятся на суму своих цифр
Вывести все трехзначные числа, которые делятся на суму своих цифр #include &lt;iostream&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru