Números de BIU (o números sumados)


10

Cómo detectarlos

Toma un entero positivo k. Encuentra sus divisores . Encuentra los factores primos distintos de cada divisor . Suma todos estos factores juntos. Si este número (suma) es un divisor de k ( si la suma divide k ) entonces, este número k, es un número BIU

Ejemplos

Tomemos el número 54
Encuentra todos los divisores: [1, 2, 3, 6, 9, 18, 27, 54]
Encuentra los factores primos distintos de cada divisor
NOTA: Para el caso de 1tomamos como factor primo distinto1

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

Ahora tomamos la suma de todos estos factores primos que
1+2+3+2+3+3+2+3+3+2+3=27
27divide 54 (no deja resto)
Entonces, 54 es un número BIU .

Otro ejemplo (rápido) para k=55
Divisores: [1,5,11,55]
Suma de factores primos distintos: NO1+5+11+5+11=33
33 es un divisor de 55, por eso NO es un número BIU .55

Números BIU

Aquí están los primeros 20 de ellos:

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

¡pero esta lista continúa y hay muchos números de BIU que esperan ser descubiertos por usted!

El reto

Dado un entero n>0como entrada , genera el enésimo número de BIU

Casos de prueba

Entrada-> Salida

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

Esto es ¡La respuesta más corta en bytes gana!


2
Pero 1no es primo ...
Stephen

3
@Stephen por eso dije "Para el caso de 1 tomamos como factor primo distinto 1". Este es mi desafío y esta es una de las reglas de este desafío. No dije que 1 es primo.

44
¿Por qué los números se llaman "BIU"?
Misha Lavrov

44
No estoy seguro pero creo que tiene que ver con unicornios intelectuales bisexuales usarlos en su vida cotidiana (no en nuestro universo, por supuesto ...)

55
Votantes, no seas tímido. Comparte tus pensamientos con el resto de nosotros.

Respuestas:


5

Jalea , 16 15 bytes

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

Pruébalo en línea!

Woohoo por las construcciones (pero a veces se esconden misteriosamente de mí, así que -1 byte gracias a @HyperNeutrino )

Cómo funciona

Æ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 byte usando en ÆfQ€lugar deÆFḢ€€
HyperNeutrino

2
but they mysteriously hide from me sometime"Jelly es un juego de ocultación atómica y búsqueda de programadores" ~ i cri
everytim

Creo que puedes guardar 1 byte con ÆDÆFSSḢ‘ḍ.
Arnauld


3

Mathematica, 85 bytes

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

3

Casco , 13 bytes

!fṠ¦ö→ΣṁoupḊN

Pruébalo en línea!

Explantacion

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

En realidad , 16 bytes

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

Pruébalo en línea!

Explicació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

Pyth , 22 bytes

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

Pruébalo aquí!

Esta es mi primera solución Pyth, comencé a aprenderla gracias a las recomendaciones de algunos usuarios muy amables en el chat: -) ... Me tomó alrededor de una hora resolverla.

Explicación

ef | qZ1!% Zhssm {Pd * M {yP - Todo el programa. Q = entrada.

 .f - Primeros enteros Q con resultados verdaderos, usando una variable Z.
     qZ1 - ¿Z es igual a 1?
   El | - OR lógico.
                   {yP: factores primos, conjunto de potencias, deduplicación.
                 * M - Obtenga el producto de cada uno. Este fragmento y ^ son para divisores.
              m} Pd: obtén los factores primos únicos de cada uno.
           ss: aplanar y sumar.
          h - Incremento (para manejar ese 1, bah)
       % Z: modula el entero actual por la suma anterior.
      ! - Negación lógica. 0 -> Verdadero,> 0 -> Falso.
e - Último elemento.

1

Haskell , 115 bytes

Todas las comprensiones de la lista aquí probablemente se pueden reducir, pero no estoy seguro de cómo. Sugerencias de golf bienvenidas! Pruébalo en línea!

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)

No golfista

Esta respuesta es en realidad tres funciones combinadas.

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 bytes

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

Pruébalo

¡Siento que el gmétodo de función debería conducir a una solución más corta, pero no puedo entender cómo funciona!


Explicación

Entrada implícita de entero U.

@                  }a

A partir de 0, devuelve el primer número que devuelve verdadero cuando se pasa por la siguiente función, Xsiendo el número actual.

Xâ ®   Ã

Obtenga los divisores ( â) de Xy pase cada uno a través de una función.

k â

Obtenga los factores ( k) del elemento actual y elimine los duplicados ( â).

xx

Reduzca la matriz agregando después de hacer primero lo mismo con cada sub-matriz.

Ä

Añadir 1al resultado.

Xv

Prueba si Xes divisible por ese número.

Incremento J(inicialmente -1) por el resultado de esa prueba.

¥

Verifique la igualdad con U.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.