Числа БИ (или Суммированные числа)


10

Как их найти

Возьмите натуральное число k. Найдите его делители . Найти различные простые факторы каждого делителя . Суммируйте все эти факторы вместе. Если это число (сумма) является делителем k ( если сумма делит k ), то это число k является числом BIU

Примеры

Давайте возьмем число 54
Найти все делители: [1, 2, 3, 6, 9, 18, 27, 54]
Найти отличные простые множители каждого делителя
ПРИМЕЧАНИЕ. Для случая, когда 1мы берем в качестве отдельного простого множителя1

1  -> 1  
2  -> 2  
3  -> 3  
6  -> 2,3  
9  -> 3  
18 -> 2,3  
27 -> 3  
54 -> 2,3 

Теперь мы возьмем сумму всех этих простых множителей
1+2+3+2+3+3+2+3+3+2+3=27
27делит 54 (уходит без остатка)
Таким образом, 54 является номер БСС .

Другой (быстрый) пример для k=55
делителей: [1,5,11,55]
Сумма различных простых факторов: 1+5+11+5+11=33
33 это НЕ делитель 55, поэтому 55это НЕ номер БСС .

Номера БИУ

Вот первые 20 из них:

1,21,54,290,735,1428,1485,1652,2262,2376,2580,2838,2862,3003,3875,4221,4745, 5525,6750,7050 ...

но этот список можно продолжить, и есть много номеров BIU , которые ждут, чтобы вы их обнаружили!

Соревнование

Принимая во внимание целое число в n>0качестве ввода , вывода п - й номер БИШС

Тестовые случаи

Вход-> Выход

1->1  
2->21   
42->23595  
100->118300    
200->415777    
300->800175    

Это быстрый ответ в байтах побеждает!


2
Но 1это не главное ...
Стивен

3
@Stephen, поэтому я сказал: «Для случая 1 мы берем в качестве отдельного простого множителя 1». Это моя задача, и это одно из правил этой задачи. Я не говорил, что 1 - простое число.

4
Почему цифры называются "BIU"?
Миша Лавров

4
Я не уверен, но я думаю, что это имеет отношение к бисексуальным интеллектуальным единорогам, использующим их в своей повседневной жизни (конечно, не в нашей вселенной ...)

5
Downvoters, не стесняйтесь. Поделитесь своими мыслями с остальными из нас.

Ответы:


5

Желе , 16 15 байт

ÆDÆfQ€SS‘ḍ
1Ç#Ṫ

Попробуйте онлайн!

Woohoo для встроенных (но они таинственно скрываются от меня иногда так -1 байт благодаря @HyperNeutrino )

Как это работает

ÆDÆfQ€SS‘ḍ - define helper function: is input a BIU number?
ÆD             - divisors
  Æf           - list of prime factors
    Q€         - now distinct prime factors
      SS       - sum, then sum again ('' counts as 0)
        ‘      - add one (to account for '')
         ḍ     - does this divide the input?

1Ç#Ṫ - main link, input n
  #     - starting at 
1          - 1
        - get the first n integers which meet:
 Ç         - helper link
   Ṫ    - tail

Использование -1 байта ÆfQ€вместоÆFḢ€€
HyperNeutrino

2
but they mysteriously hide from me sometime«Jelly - игра в прятки атомов и программистов» - я
кричал о всех

Я думаю, что вы можете сохранить 1 байт с ÆDÆFSSḢ‘ḍ.
Арно



3

Шелуха , 13 байт

!fṠ¦ö→ΣṁoupḊN

Попробуйте онлайн!

Explantaion

  Ṡ¦ö→ΣṁoupḊ    Predicate: returns 1 if BIU, else 0.
           Ḋ    List of divisors
       ṁ        Map and then concatenate
        oup     unique prime factors
      Σ         Sum
    ö→          Add one
  Ṡ¦            Is the argument divisible by this result
 f          N   Filter the natural numbers by that predicate
!               Index


2

Pyth , 22 байта

e.f|qZ1!%Zhssm{Pd*M{yP

Попробуй это здесь!

Это мое первое решение Pyth, которое я начал изучать благодаря рекомендациям некоторых очень добрых пользователей в чате: -) ... У меня ушло около часа на решение.

объяснение

ef | qZ1!% Zhssm {Pd * M {yP - Вся программа. Q = вход.

 .f - Первые Q целых чисел с достоверными результатами, используя переменную Z.
     qZ1 - Z равен 1?
   | - Логическое ИЛИ.
                   {yP - Основные факторы, powerset, дедупликация.
                 * М - Получить продукт каждого. Этот кусок и ^ для делителей.
              m} Pd - Получить уникальные простые факторы каждого.
           ss - Свести и суммировать.
          h - приращение (чтобы справиться с этим 1, ба)
       % Z - по модулю текущее целое число на сумму выше.
      ! - логическое отрицание. 0 -> Истина,> 0 -> Ложь.
e - Последний элемент.

1

Haskell , 115 байт

Все возможные здесь списки, вероятно, могут быть исправлены, но я не уверен, как это сделать. Предложения по игре в гольф приветствуются! Попробуйте онлайн!

x!y=rem x y<1
b n=[a|a<-[1..],a!(1+sum[sum[z|z<-[2..m],m!z,and[not$z!x|x<-[2..z-1]]]|m<-[x|x<-[2..a],a!x]])]!!(n-1)

Ungolfing

Этот ответ на самом деле три функции, соединенные вместе.

divisors a = [x | x <- [2..a], rem a x == 0]
sumPrimeDivs m = sum [z | z <- [2..m], rem m z == 0, and [rem z x /= 0 | x <- [2..z-1]]]
biu n = [a | a <- [1..], rem a (1 + sum [sumPrimeDivs m | m <- divisors a]) == 0] !! (n-1)

0

Japt , 22 21 байт

@¥(J±XvXâ ®k âÃxx Ä}a

Попробуй это

Я чувствую, что gметод функции должен привести к более короткому решению, но я не могу понять, как он работает!


объяснение

Неявный ввод целого числа U.

@                  }a

Начиная с 0, верните первое число, которое возвращает true, когда передано через следующую функцию, с Xтекущим числом.

Xâ ®   Ã

Получить divisors ( â) Xи передать каждый через функцию.

k â

Получите факторы ( k) текущего элемента и удалите дубликаты ( â).

xx

Уменьшите массив путем добавления после того, как сначала сделаете то же самое для каждого подмассива.

Ä

Добавьте 1к результату.

Xv

Проверьте, Xделится ли на это число.

Инкремент J(изначально -1) по результатам этого теста.

¥

Проверьте на равенство с U.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.