Numéros BIU (ou numéros subdivisés)

10

Comment les repérer

Prenez un entier positif k. Trouvez ses diviseurs . Trouvez les facteurs premiers distincts de chaque diviseur . Additionnez tous ces facteurs ensemble. Si ce nombre (somme) est un diviseur de k ( si la somme divise k ) alors, ce nombre k, est un nombre BIU

Exemples

Prenons le nombre 54
Trouver tous les diviseurs: [1, 2, 3, 6, 9, 18, 27, 54]
Trouver les facteurs premiers distincts de chaque diviseur
REMARQUE: Pour le cas de 1nous prenons comme facteur premier distinct1

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

Maintenant, nous prenons la somme de tous ces facteurs premiers
1+2+3+2+3+3+2+3+3+2+3=27
27divise 54 (ne laisse aucun reste)
Donc, 54 est un nombre BIU .

Un autre exemple (rapide) pour les k=55
diviseurs: [1,5,11,55]
Somme de facteurs premiers distincts: 1+5+11+5+11=33
33 n'est PAS un diviseur de 55, c'est pourquoi ce 55n'est PAS un nombre BIU .

Numéros BIU

Voici les 20 premiers d'entre eux:

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

mais cette liste continue et il y a beaucoup de numéros BIU qui attendent d'être découverts par vous!

Le défi

Étant donné un entier n>0en entrée , affichez le nième numéro BIU

Cas de test

Entrée-> Sortie

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

Ceci est . La réponse la plus courte en octets gagne!


la source
2
Mais ce 1n'est pas le premier ...
Stephen
3
@ Stephen c'est pourquoi j'ai dit "Pour le cas de 1, nous prenons comme facteur premier distinct 1". C'est mon défi et c'est l'une des règles de ce défi. Je n'ai pas dit que 1 est premier.
4
Pourquoi les numéros sont-ils appelés "BIU"?
Misha Lavrov
4
Je ne suis pas sûr mais je pense que cela a à voir avec les licornes intellectuelles bisexuelles qui les utilisent dans leur vie quotidienne (pas dans notre univers bien sûr ...)
5
Downvoters, ne soyez pas timide. Partagez vos pensées avec le reste d'entre nous.

Réponses:

5

Gelée , 16 15 octets

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

Essayez-le en ligne!

Woohoo pour les builtins (mais ils me cachent mystérieusement parfois donc -1 octet grâce à @HyperNeutrino )

Comment ça fonctionne

Æ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
fireflame241
la source
-1 octet utilisant ÆfQ€au lieu deÆFḢ€€
HyperNeutrino
2
but they mysteriously hide from me sometime"Jelly est un jeu de recherche d'atomes et de programmeurs" ~ i cri everytim
HyperNeutrino
Je pense que vous pouvez économiser 1 octet avec ÆDÆFSSḢ‘ḍ.
Arnauld
3

Mathematica, 85 octets

If[#<2,1,n=#0[#-1];While[Count[(d=Divisors)@++n,1+Tr@Cases[d/@d@n,_?PrimeQ,2]]<1];n]&
Misha Lavrov
la source
3

Husk , 13 octets

!fṠ¦ö→ΣṁoupḊN

Essayez-le en ligne!

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
H.PWiz
la source
2

En fait , 16 octets

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

Essayez-le en ligne!

Explication:

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
Mego
la source
2

Pyth , 22 octets

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

Essayez-le ici!

Ceci est ma toute première solution Pyth, j'ai commencé à l'apprendre grâce aux recommandations de certains utilisateurs très gentils dans le chat: -) ... Cela m'a pris environ une heure pour résoudre.

Explication

ef | qZ1!% Zhssm {Pd * M {yP - Programme complet. Q = entrée.

 .f - Premiers Q entiers avec des résultats véridiques, utilisant une variable Z.
     qZ1 - Z est-il égal à 1?
   | - OU logique.
                   {yP - Facteurs premiers, ensemble de puissance, déduplication.
                 * M - Obtenez le produit de chacun. Ce chunck et ^ sont pour les diviseurs.
              m} Pd - Obtenez les facteurs premiers uniques de chacun.
           ss - Aplatir et additionner.
          h - Incrément (pour gérer ce 1, bah)
       % Z - Modulo l'entier courant par la somme ci-dessus.
      ! - Négation logique. 0 -> Vrai,> 0 -> Faux.
e - Dernier élément.

la source
1

Haskell , 115 octets

Toutes les compréhensions de liste ici peuvent probablement être analysées, mais je ne sais pas comment. Suggestions de golf bienvenues! Essayez-le en ligne!

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

Cette réponse est en fait trois fonctions écrasées ensemble.

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)
Sherlock9
la source
0

Japt , 22 21 octets

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

Essaye-le

Je pense que la gméthode de la fonction devrait conduire à une solution plus courte, mais je ne peux pas comprendre comment cela fonctionne!


Explication

Saisie implicite d'entier U.

@                  }a

En partant de 0, renvoyez le premier nombre qui renvoie vrai lorsqu'il est passé par la fonction suivante, avec Xétant le nombre actuel.

Xâ ®   Ã

Obtenez les diviseurs ( â) de Xet passez chacun par une fonction.

k â

Obtenez les facteurs ( k) de l'élément courant et supprimez les doublons ( â).

xx

Réduisez le tableau par addition après avoir fait la même chose pour chaque sous-tableau.

Ä

Ajoutez 1au résultat.

Xv

Testez si Xest divisible par ce nombre.

Incrémenter J(initialement -1) par le résultat de ce test.

¥

Vérifiez l'égalité avec U.

Hirsute
la source