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

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

01.06.2015, 16:24. Показов 1005. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти все натуральные числа <= N, которые делятся без остатка на каждую из своих цифр
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2015, 16:24
Ответы с готовыми решениями:

Вывести числа, которые делятся без остатка на 5 и не делятся на 7 и на 11
помогите создать программу , которая выводит все числа от a до b , которые делятся без остатка на 5...

Вывести все трехзначные числа которые делятся без остатка на каждую из своих цифр
вывести все трехзначные числа которые делятся без остатка на каждую из своих цифр

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

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

10
Модератор
Эксперт функциональных языков программированияЭксперт Python
37038 / 20492 / 4244
Регистрация: 12.02.2012
Сообщений: 33,853
Записей в блоге: 13
01.06.2015, 20:09 2
HomeLisp:

Lisp
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
;; Список уникальных цифр числа
 
(defun dig-list (n &optional (r nil))
  (cond ((zerop n) r)
        (t (let ((m (% n 10)))
                (if (member m r) (dig-list (\ n 10) r) (dig-list (\ n 10) (cons m r)))))))
 
==> dig-list
 
;; Решение
 
(defun task (n &optional (r nil))
 (cond ((zerop n) r)
       (t (let ((lst (dig-list n)))
            (if (member 0 lst) 
                (task (- n 1) r)
                (if (forall lst #'(lambda (x) (zerop (% n x))))
                    (task (- n 1) (cons n r))
                    (task (- n 1) r)))))))
 
==> task
 
(task 120)
 
==> (1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115)
1
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
01.06.2015, 20:23 3
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(printLn "")
(printLn "ЗАДАЧА - найти все натуральные числа <= N, которые делятся без остатка на каждую из
своих цифр:")
(defn divlist (n)
    (defn test (n)
        (defn go (m)
              (def d (mod m 10))
              (cond (= 0 m) True
                    (= 0 d) False
                    (= 0 (mod n d)) (go (/ m 10))
                    False))
        (go n))
    (filter test (list-from-to 1 n)))
(printLn (str "результат :" (divlist 120)))
Код
ЗАДАЧА - найти все натуральные числа <= N, которые делятся без остатка на каждую из
своих цифр:
(результат : (1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115))
3
1051 / 945 / 107
Регистрация: 04.11.2012
Сообщений: 975
Записей в блоге: 3
01.06.2015, 20:56 4
Подождите, задача сначала выглядела не так. Нужно было делить на каждую из цифр числа N ?!
1
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
01.06.2015, 20:59 5
Цитата Сообщение от ioncretu Посмотреть сообщение
на каждую из своих цифр
и три буквы для движка...
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
37038 / 20492 / 4244
Регистрация: 12.02.2012
Сообщений: 33,853
Записей в блоге: 13
01.06.2015, 21:29 6
Lambdik, Возможно это я виноват. Тема была сформулирована довольно коряво, я понял так (и переформулировал).
1
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 4
02.06.2015, 08:18  [ТС] 7
Ребята я извеняюсь, перевод из молдавского

Добавлено через 9 минут
Найти все натуральные числа <= N, которые делиться без остатка на каждую из цифр компонента числа N

Добавлено через 49 секунд
Но всетаки спосибо!!! и за ето
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
02.06.2015, 09:10 8
Lisp
1
2
3
4
5
6
7
8
9
10
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div-n (n &aux (w (int-digits n)))
  (loop for a from 1 to n
        when (loop for e in w always (zerop (mod a e)))
        collect a))
 
> (digi-div-n 129)
(18 36 54 72 90 108 126)
Добавлено через 26 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
(defun int-digits (n &optional ac)
  (if (zerop n) ac (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun digi-div-n (n &aux (w (int-digits n)))
  (loop for a from 1 to n
        when (every #'(lambda (e) (zerop (mod a e))) w)
        collect a))
 
> (digi-div-n 129)
(18 36 54 72 90 108 126)
Добавлено через 21 секунду
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun int-digits (n &optional ac)
  (if (zerop n) ac (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun digi-div-n (n &optional (z 1) &aux (w (int-digits n)))
  (cond ((> z n) nil)
        ((every #'(lambda (e) (zerop (mod z e))) w)
         (cons z (digi-div-n n (1+ z))))
        ((digi-div-n n (1+ z)))))
 
> (digi-div-n 129)
(18 36 54 72 90 108 126)
2
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 4
02.06.2015, 09:26  [ТС] 9
спосибо!
0
1051 / 945 / 107
Регистрация: 04.11.2012
Сообщений: 975
Записей в блоге: 3
02.06.2015, 09:39 10
Lisp
1
2
3
> (digi-div-n 130)
 
Error: Division-by-zero caused by FLOOR of (3 0).
1
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
02.06.2015, 22:51 11
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div-n (n &aux (w (int-digits n)))
  (loop for a from 1 to n
        when (and (notany #'zerop w)
                  (loop for e in w
                        always (zerop (mod a e))))
        collect a))
 
> (digi-div-n 129)
(18 36 54 72 90 108 126)
> (digi-div-n 130)
NIL
Добавлено через 7 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun int-digits (n &optional ac)
  (if (zerop n) ac (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun check (z n &aux (w (int-digits n)))
  (and (notany #'zerop w)
       (loop for e in w
             always (zerop (mod z e)))))
 
(defun digi-div-n (n &optional (z 1))
  (cond ((> z n) nil)
        ((check z n) (cons z (digi-div-n n (1+ z))))
        ((digi-div-n n (1+ z)))))
 
> (digi-div-n 129)
(18 36 54 72 90 108 126)
> (digi-div-n 130)
NIL
Добавлено через 4 минуты
вариант "своих цифр":
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div (n)
  (loop for a from 1 to n
        when (and (notany #'zerop (int-digits a))
                  (loop for e in (int-digits a)
                        always (zerop (mod a e))))
        collect a))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
Добавлено через 29 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div (n)
  (remove-if-not
   #'(lambda (a)
       (and (notany #'zerop (int-digits a))
            (loop for e in (int-digits a)
                  always (zerop (mod a e)))))
   (loop for a from 1 to n collect a)))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
Добавлено через 31 секунду
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun int-digits (n &optional ac)
  (if (zerop n)
      ac
      (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun check (n &aux (w (int-digits n)))
  (and (notany #'zerop w)
       (loop for e in w
             always (zerop (mod n e)))))
 
(defun digi-div (n)
  (remove-if-not
   #'(lambda (a) (check a))
   (loop for a from 1 to n collect a)))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
Добавлено через 18 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun int-digits (n &optional ac)
  (if (zerop n)
      ac
      (int-digits (truncate n 10) (cons (rem n 10) ac))))
 
(defun check (n &aux (w (int-digits n)))
  (and (notany #'zerop w)
       (loop for e in w
             always (zerop (mod n e)))))
 
(defun digi-div (n &optional (z 1))
  (cond ((> z n) nil)
        ((check z) (cons z (digi-div n (1+ z))))
        ((digi-div n (1+ z)))))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
Добавлено через 11 часов 56 минут
как вариант:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div (n)
  (loop for a from 1 to n for w = (int-digits a)
        when (and (notany #'zerop w)
                  (loop for e in w
                        always (zerop (mod a e))))
        collect a))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
Добавлено через 8 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun int-digits (n) 
  (loop for c across (write-to-string n) collect (digit-char-p c)))
 
(defun digi-div (n)
  (remove-if-not
   #'(lambda (a &aux (w (int-digits a)))
       (and (notany #'zerop w)
            (loop for e in w
                  always (zerop (mod a e)))))
   (loop for a from 1 to n collect a)))
 
> (digi-div 129)
(1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128)
4
02.06.2015, 22:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2015, 22:51
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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