![]() |
От: |
AutumnLeaf
|
|
Дата: | 26.04.07 16:50 | ||
Оценка: |
Задача №35:
The number, 197, is called a circular prime because all rotations of the digits: 197, 971, and 719, are themselves prime.
There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.
How many circular primes are there below one million?
primes =: i.&.(p:^:_1) 1e6 NB. список простых чисел до миллиона
list =: (#~ *./@(e.&'1379')@":"0) primes NB. выкинем все, в которых есть цифры отличные от 1,3,7,9 (к результату потом надо добавить числа 2 и 5)
m =: (".)@((|."0 1)~ (i.)@#)@(":)
m"0 (123 456 789)
123 231 312
456 564 645
789 897 978
(m 13) e. (13 31 133) NB. обе перестановки числа 13 есть в списке, применяя AND, получаем, что 13 удовлетворяет условиям подзадачи
1 1
(m 313) e. (13 31 133) NB. только одна из трех перестановок числа 313 есть в списке, применяя AND, получаем, что 313 не удовлетворяет условиям подзадачи
0 1 0
(m"0 (13 313)) e. (13 31 133) NB. если после этого применить AND к строчкам, то неправильный ответ
1 1 0
0 1 0
(m"0 list) e. (list)
в тацитной форме? Что-то не выходит...