Номери BIU (або узагальнені номери)


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це НЕ номер БСС .

Номери BIU

Ось перші 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
Покірники, не соромтеся. Поділіться своїми думками з іншими нами.

Відповіді:


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

Спробуйте в Інтернеті!

Пояснення

  Ṡ¦ö→Σṁ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

Власне , 16 байт

u⌠;÷♂y♂iΣu@%Y⌡╓N

Спробуйте в Інтернеті!

Пояснення:

u⌠;÷♂y♂iΣu@%Y⌡╓N
u⌠;÷♂y♂iΣu@%Y⌡╓   first n+1 numbers x starting with x=0 where
   ÷                divisors
    ♂y              prime factors of divisors
      ♂iΣu          sum of prime factors of divisors, plus 1
  ;       @%        x mod sum
            Y       is 0
               N  last number in list

2

Піт , 22 байти

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

Спробуйте тут!

Це моє перше в історії рішення Pyth, я почав його вивчати завдяки рекомендаціям дуже люб’язних користувачів у чаті: -) ... Вирішив мені близько години.

Пояснення

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

 .f - Цілі Q першого числа з результатами трити, використовуючи змінну Z.
     qZ1 - Чи Z дорівнює 1?
   | - Логічний АБО.
                   {yP - Основні фактори, потужність, дублювання.
                 * M - Отримайте добуток кожного. Цей шматок і ^ - для дільників.
              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, поверніть перше число, яке повертає істинне, коли пройдете через наступну функцію, з Xпоточним номером.

Xâ ®   Ã

Отримайте дільники ( â) Xі пропустіть кожен через функцію.

k â

Отримайте фактори ( k) поточного елемента та видаліть дублікати ( â).

xx

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

Ä

Додайте 1до результату.

Xv

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

Приріст J(спочатку -1) за результатами цього тесту.

¥

Перевірте рівність с U.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.