Как отобразить первые N натуральных чисел, которые имеют в качестве делителей только 2, 3 и 7 в Лиспе

Как вывести первые N натуральных чисел, зная делители в лиспе? Делители всего 2, 3 и 7. Я новичок в лиспе.

Пример: первые 10 номеров - 2 3 4 6 7 8 9 12 14 16

2 = 2^1 * 3^0 * 7^0
3 = 2^0 * 3^0 * 7^0
4 = 2^2 * 3^0 * 7^0
6 = 2^1 * 3^1 * 7^0
7 = 2^0 * 3^0 * 7^1
8 = 2^3 * 3^0 * 7^0
9 = 2^0 * 3^2 * 7^0
12 = 2^2 * 3^1 * 7^0
14 = 2^1 * 3^0 * 7^1
16 = 2^4 * 3^0 * 7^0

Я написал код ниже, но он неправильно отображает числа.

(defun numbers (n)
    (loop
       for i from 1 upto n
        do
       (when 
         (and (zerop (mod i 2)) (zerop (mod i 3)) (zerop (mod i 7)))
         (format t "~D~%" i)
       )
    )
)

(numbers 10)

Я ожидаю, что первое число будет 2, но фактический результат - 42.

0 ответов

Другие вопросы по тегам