Как отобразить первые 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.