Cuenta los divisores de un número

26

Introducción

Este es un desafío muy simple: simplemente cuente los divisores de un número. Hemos tenido un desafío similar pero más complicado antes, pero tengo la intención de que este sea de nivel de entrada.

El reto

Cree un programa o función que, dado un entero estrictamente positivo N, emite o devuelve cuántos divisores tiene, incluidos 1 y N.

Entrada: Un entero> 0. Puede suponer que el número puede representarse en el tipo numérico nativo de su idioma.

Salida: El número de divisores enteros positivos que tiene, incluido 1 y el número mismo.

Las presentaciones se puntuarán en bytes . Puede encontrar este sitio web a mano, aunque puede usar cualquier método razonable para generar su recuento de bytes.

Este es el , por lo que gana el puntaje más bajo.

Editar: ¡Parece que la respuesta Pyth de 5 bytes de FryAmTheEggman es la ganadora! Sin embargo, siéntase libre de enviar nuevas respuestas; Si puede obtener algo más corto, cambiaré la respuesta aceptada.

Casos de prueba

ndiv(1) -> 1
ndiv(2) -> 2
ndiv(12) -> 6
ndiv(30) -> 8
ndiv(60) -> 12
ndiv(97) -> 2
ndiv(100) -> 9

Tablas de clasificación

Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.

Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:

# Language Name, N bytes

¿Dónde Nestá el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Si desea incluir varios números en su encabezado (p. Ej., Porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de los intérpretes por separado), asegúrese de que el puntaje real sea el último número en el encabezado:

# Perl, 43 + 2 (-p flag) = 45 bytes

También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

bkul
fuente

Respuestas:

19

Pyth, 5

l{yPQ

Utiliza la operación de subconjuntos en los factores primos de la entrada, luego mantiene solo las listas únicas de factores y devuelve este recuento.

Banco de pruebas

Explicación

Usando 25 como ejemplo, para que la lista de subconjuntos no sea muy larga

l{yPQ     ## implicit:  Q = eval(input()) so Q == 25
   PQ     ## Prime factors of Q, giving [5, 5]
  y       ## All subsets, giving [[], [5], [5], [5, 5]]
 {        ## Unique-fiy, giving [[], [5], [5, 5]]
l         ## Length, print implicity
FryAmTheEggman
fuente
Fascinante. Buen enfoque
Cyoce
14

C ++ C, 43 57 56 46 43 bytes

Sobre las sugerencias de Martin Büttner:

i,c;f(n){for(i=c=n;i;n%i--&&--c);return c;}
Sahil Arora
fuente
1
Espere, cuentemos ambos en su lugar, para 43:i,c;f(n){for(i=c=n;i;n%i--&&--c);return c;}
Martin Ender
@ MartinBüttner Wow hombre wow. ¡Seriamente! _ / \ _
Sahil Arora
1
¡Hermosa! : ~)!
sweerpotato
11

LabVIEW, 4938 Bytes

Bueno, obviamente no es adecuado para el golf de código, pero lo que sea, así que para mi primer post y el lolz aquí va. ingrese la descripción de la imagen aquí

Eumel
fuente
¡Bienvenido a Programming Puzzles y Code Golf! ¿Cómo calificaste esto, si no te importa que te pregunte? No pude encontrar ningún precedente en Meta.
bkul
lo
guardé
¿Y fue 4.938 bytes? ¿No kilobytes, por ejemplo?
bkul
para mayor precisión, tomé el recuento de bytes, no el recuento de kb
Eumel
44
@bkul Creo que la confusión se debe a .que, estoy bastante seguro, significa un separador de miles, no un punto decimal (como es común en algunos idiomas).
Martin Ender
10

Haskell, 28 bytes

f n=sum[0^mod n i|i<-[1..n]]

El truco aquí es probar si un resto está 0usando la función de indicador 0^.

0^0 = 1
0^_ = 0

Esto funciona porque cualquier potencia positiva de 0 es 0, mientras que 0 ^ 0 es combinatoriamente el producto vacío de 1.

Compare esto con el filtrado

f n=sum[1|i<-[1..n],mod n i<1]
xnor
fuente
7

Dyalog APL , 7 6 bytes

≢∘∪⊢∨⍳

Es una función sin nombre que puede nombrarse y luego reutilizarse para cada ¨caso de prueba ( ) de la siguiente manera:

      f ← ≢∘∪⊢∨⍳
      f¨ 1 2 12 30 60 97 100
1 2 6 8 12 2 9

Explicación:

 ┌─┴──┐  
 ∪  ┌─┼─┐
 ∘  │ ∨ │
 ̸≡  ⊢   ⍳

Cuente lo único del GCD de sí mismo y cada uno de los enteros hasta .

Gracias a ngn por guardar un byte.


Versión antigua: +/0=⍳|⊢

Así es como funciona:

  ┌─┴─┐      
  / ┌─┼───┐  
┌─┘ 0 = ┌─┼─┐
+       ⍳ | ⊢

⍳|⊢Argumento 1-a través del argumento división-resto
0=Booleano si 0 es igual al resto de división
+/Suma del booleano, es decir, recuento de unos.

Adán
fuente
6

Python 2, 37 bytes

f=lambda n,i=1:i/n or(n%i<1)+f(n,i+1)

Una función recursiva. La entrada opcional ien el divisor que se está probando. La expresión (n%i<1)prueba la divisibilidad, con True(que es igual 1) para divisores. El resultado se agrega a la expresión recusiva para i+1. Cuando i==nse alcanza, la división de piso entera se i/nevalúa como 1, y ese valor se devuelve como el caso base, contando a nsí mismo como un divisor de n.


38:

lambda n:sum(n%-~i<1for i in range(n))

Una función anónima. Prueba todos los divisores posibles a 1través n. Esto se desplaza hacia arriba a partir 0a través n-1de range(n)usar -~, lo que añade 1. Sumando los bools usa el hecho de que Python trata True/ Falsecomo 1/ 0.

xnor
fuente
6

Retina , 17 bytes

(?<=(.+))(?=\1*$)

Entrada en unario , salida en decimal.

Pruébalo en línea.

Cuando se invoca con una sola expresión regular, Retina simplemente cuenta las coincidencias. La expresión regular en sí coincide con una posición , donde el número unario a la izquierda es un divisor de toda la entrada. También estoy haciendo uso del hecho de que las búsquedas son atómicas, por lo que no necesito usar un ^ancla.

La primera mirada atrás simplemente captura todo el prefijo en grupo 1. Esto nunca puede fallar, así que después de mirar hacia atrás sabemos que eso es lo que hay en el grupo 1 y que ya no cambiará más.

La búsqueda anticipada luego verifica si podemos alcanzar el final de la cadena repitiendo la cadena capturada (nuestro divisor potencial) 0 o más veces.

Martin Ender
fuente
6

J, 10 bytes

[:*/1+_&q:

Este es un verbo monádico sin nombre. Calcula σ 0 (∏p k α k ) como ∏ (α k + 1) .

Pruébelo en línea con J.js .

Cómo funciona

[:*/1+_&q:    Right argument: y

      _&q:    Compute all exponents of the prime factorization of y.
    1+        Add 1 to each exponent.
[:*/          Reduce by mutiplication.
Dennis
fuente
No creo que q:esté permitido, ya que resuelve una parte esencial del desafío. ¿Qué tal solo[:+/0=]|~1+i.
FUZxxl
Eso sería un duplicado de esta respuesta . Además, las funciones integradas no están prohibidas de forma predeterminada, y el desafío no parece mencionarlas.
Dennis
Las construcciones que hacen todo / casi todo el trabajo de un desafío generalmente están prohibidas, pero puedo seguir tu razonamiento q: .
FUZxxl
1
No son. Desearía que lo fueran, pero no lo son.
Dennis
Hrmpf hrmpf que apesta un poco.
FUZxxl
6

Golfscript, 19 18 17 13 bytes

Con gracias a Martin Büttner .

~.,\{\)%!}+,,

Cómo funciona

~               Evaluate the input, n
 .,             Duplicate the input, create array [0..n-1]
   \            Swap array and n
    {    }+     Add n to block == {n block}
     \          Swap n with i in array
      )         Increment i
       %        n mod i
        !       Logical not so that 1 if divisible by n else 0
           ,    Filter array using block for all i divisible by n
            ,   Get length of the filtered array, the answer

también

De @Peter Taylor , también en 13 bytes.

~:X,{)X\%!},,

Cómo funciona

~               Evaluate the input
 :X             Store input in variable X
   ,            Create array [0..X-1]
    {     },    Filter array using the following block
     )          Increment i in array
      X\        Add X to stack, swap with i
        %       X mod i,
         !      Logical not so that 1 if divisible by n else 0
            ,   Get length of the filtered array, the answer
Sherlock9
fuente
Por la misma duración que también podría tener~:X,{)X\%!},,
Peter Taylor
4

J, 13 12 11 bytes

Mi primer golf en J. Todavía lo estoy aprendiendo.

Salvó un byte gracias a Dennis.

Se guardó un byte más gracias a randomra.

1+/@,0=i.|]

Explicación:

1+/@,0=i.|]
       i.        the array 0 .. n-1
         |]      mod n
     0=          replace 0 by 1, and nonzero entries by 0
1   ,            prepend 1 to the array
 +/@             take the sum
alephalpha
fuente
3

Arcyóu , 12 bytes

¡Que empiece la fiesta!

(F(x)(_(d/ x

Esto usa la función incorporada d/. Aquí hay una versión sin el incorporado (27 bytes):

(F(x)(](+(f i(_ 1 x)(‰ x i

Explicación:

(F(x)              ; Anonymous function with one parameter x
  (]               ; Increment
    (+             ; Sum
      (f i(_ 1 x)  ; For i in range from 1 to x-1 inclusive:
        (‰ x i     ; x divisible by i
bkul
fuente
3

CJam, 11 bytes

ri_,:)f%0e=

Pruébalo aquí.

Explicación

CJam no tiene una función integrada para esto, por lo que estamos haciendo una división de prueba.

ri  e# Read input and convert to integer N.
_,  e# Duplicate and turn into range [0 1 ... N-1]
:)  e# Increment each element in the range to get [1 2 ... N]
f%  e# Take N modulo each of the list elements.
0e= e# Count the zeroes.

Prima

Aquí hay una solución interesante en 12 bytes (que sospecho que podría ser más corta en un lenguaje como J):

ri_)2m*::*e=

El resultado es igual al número de veces que naparece en una n x ntabla de multiplicar:

ri  e# Read input and convert to integer N.
_)  e# Duplicate and increment.
2m* e# Take Cartesian product of [0 1 ... N] with itself.
::* e# Compute the product of each pair.
e=  e# Count the occurrences of N.
Martin Ender
fuente
3

Matlab, 20 bytes

Realice k mod npara cada k = 1,...,n, luego realice not(que convierte cada nonzer en cero y cada cero en 1) y sume todos esos valores.

@(n)sum(~mod(n,1:n))
falla
fuente
¡Este también habría sido mi enfoque!
Luis Mendo
Es interesante que tenga la misma longitud que length(divisors(n)).
Acumulación
@Acumulación aún necesitaría agregar un @(n)para que sea una sumisión válida
error
3

Julia, 20 bytes

n->sum(i->n%i<1,1:n)

Esta es una función anónima que funciona de la siguiente manera: para cada entero desde 1 hasta la entrada, pruebe si el módulo de entrada del entero es cero. Si es así, el valor será true, de lo contrario false. Sumamos los booleanos que se convierten implícitamente en enteros, produciendo el número de divisores.


Una solución mucho más fresca (aunque también mucho más larga), incluida en aras de la integridad, es

n->prod(collect(values(factor(n))).+1)

Esto obtiene la factorización canónica de n, es decir \prod_{i=1}^k p_i^e_i, y calcula la función del divisor como τ(n) = \prod_{i=1}^k e_i + 1.

Alex A.
fuente
2

PARI / GP, 6 bytes

PARI / GP tiene una función incorporada para esto.

numdiv
alephalpha
fuente
No estoy seguro, pero creo que, según el meta, para las incorporaciones, no puede simplemente repetirlo.
Maltysen
3
@ Maltysen Creo que está permitido. meta.codegolf.stackexchange.com/a/7206/9288
alephalpha
2

Rubí, 27 bytes

->n{(1..n).count{|i|n%i<1}}

Ejecución de muestra:

2.1.5 :001 > ->n{(1..n).count{|i|n%i<1}}[100]
 => 9 
hombre trabajando
fuente
2

Octava, 21 20 bytes

@(n)nnz(~mod(n,1:n))
alephalpha
fuente
Me gusta nnz, gran uso aquí =)
error
2

Regex (.NET), 33 bytes

^((?=.*$(?<=^\2*(.+?(?>\2?)))).)+

Suponiendo que la entrada y la salida están en unario, y la salida se toma de la coincidencia principal de la expresión regular.

Desglose de la expresión regular:

  • .*$ Ajusta el puntero al final de la cadena para que tengamos toda la entrada x en una dirección.
  • (?<=^\2*(.+?(?>\2?))) coincide de derecha a izquierda y comprueba el divisor haciendo un ciclo de x a 0.
    • (.+?(?>\2?)) es una "variable" que comienza desde 1 en la primera iteración y continúa desde el número en la iteración anterior y recorre hasta x.
    • ^\2* comprueba si x es un múltiplo de "variable".

Básicamente tiene la misma idea que mi respuesta para Calcular Phi (no Pi) . Solo el cheque es diferente.

Prueba la expresión regular en RegexStorm .

n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fuente
2

Laberinto , 33 bytes

?:}
  :{:}%{{
@ }   " )
!{("{;"}}

Pruébalo en línea.

Esto implementa la división de prueba. Agregaré una explicación completa más tarde. Probablemente no sea óptimo, pero estoy teniendo dificultades para encontrar algo más corto.

Martin Ender
fuente
2

Perl 6 , 17 bytes

{[+] $_ X%%1..$_} # 17

uso:

say {[+] $_ X%%1..$_}(60); # 12␤

my $code = {[+] $_ X%%1..$_};

say $code(97); # 2␤

my &code = $code;
say code 92; # 6
Brad Gilbert b2gills
fuente
2

Javascript (ES6), 60 57 42 40 39 37 bytes

Esto probablemente se pueda jugar mejor al golf.

n=>{for(d=i=n;i;n%i--&&d--);return d}

Edición 1: estaba en lo cierto. Se eliminaron las llaves después del bucle for.

Edición 2: Golfed a 40 bytes con gracias a manatwork y Martin Büttner .

Edición 3: guardar un byte basando la función en la respuesta C anterior.

Edición 4: Gracias a ן nɟuɐɯɹɐ ן oɯ y Neil , pero no puedo hacer que la evaluación funcione.

Editar 5: Olvidé eliminar la evaluación.

Prueba

n = <input type="number" oninput='result.innerHTML=(

n=>{for(d=i=n;i;n%i--&&d--);return d}

)(+this.value)' /><pre id="result"></pre>

Sherlock9
fuente
2
Renunciar a los buenos hábitos. Eliminar varpalabras clave Más consejos en Consejos para jugar golf en JavaScript y Consejos para jugar golf en ECMAScript 6 .
trabajo de
2
También abandone los malos hábitos: cuando tenga que elegir entre ++iy i++, elija el primero (esto no tiene nada que ver con el golf). También n%i<1debería guardar un byte.
Martin Ender
2
Solo brevemente probado:n=>{for(d=i=0;i<n;)n%++i<1&&d++;return d}
manatwork
1
38: n => eval ('para (d = 0, i = n; i; d + = n% i - <1); d')
Mama Fun Roll
1
@manatwork ¿Por qué no n%++i||++d?
Neil
2

PowerShell, 34 bytes

param($x)(1..$x|?{!($x%$_)}).Count

e.g. 

PS C:\temp> .\divisors-of-x.ps1 97
2
  • crear una lista de números del 1 al x, alimentarlos a la tubería |
  • filtre la tubería en (x% item == 0), !convirtiendo implícitamente el resultado del módulo como un booleano y luego invirtiéndolo usando los divisores para que se conviertan en $ true y se les permita pasar; usando el alias incorporado ?paraWhere-Object
  • reunir ()y .Countcuántos elementos pasaron por el filtro
TessellatingHeckler
fuente
Muy bien pirateado!
bkul
2

Jalea , 2 bytes (no competitiva (de nuevo))

Æd

Pruébalo en línea!

Creo que esto usa características implementadas después de la otra respuesta de Jelly. Sin embargo, comente si estoy equivocado (no puedo ver cada confirmación en la fila, ya sabes :))

Erik el Outgolfer
fuente
2

Taxi, 2143 bytes

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l 2 r.Pickup a passenger going to Cyclone.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 1 r.Go to Cyclone:n 1 l.Pickup a passenger going to Firemouth Grill.Pickup a passenger going to Joyless Park.Go to Firemouth Grill:s 1 l 2 l 1 r.Go to Joyless Park:e 1 l 3 r.[i][Check next value n-i]Go to Zoom Zoom:w 1 r 2 l 2 r.Go to Sunny Skies Park:w 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Sunny Skies Park.Go to Joyless Park:n 2 r 2 r 2 l.Pickup a passenger going to Cyclone.Go to Sunny Skies Park:w 1 r 2 l 2 l 1 l.Go to Cyclone:n 1 l.Pickup a passenger going to Joyless Park.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:n 2 r 2 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 1 l 2 l.Pickup a passenger going to Trunkers.Pickup a passenger going to Equal's Corner.Go to Trunkers:s 1 l.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan "F" if no one is waiting.Pickup a passenger going to Knots Landing.Go to Firemouth Grill:n 3 r 1 l 1 r.Pickup a passenger going to The Underground.Go to The Underground:e 1 l.Pickup a passenger going to Firemouth Grill.Go to Knots Landing:n 2 r.Go to Firemouth Grill:w 1 l 2 r.Go to Joyless Park:e 1 l 3 r.Switch to plan "N".[F][Value not a divisor]Go to Joyless Park:n 3 r 1 r 2 l 4 r.[N]Pickup a passenger going to The Underground.Go to The Underground:w 1 l.Switch to plan "E" if no one is waiting.Pickup a passenger going to Joyless Park.Go to Joyless Park:n 1 r.Switch to plan "i".[E]Go to Sunny Skies Park:n 3 l 2 l 1 l.Pickup a passenger going to What's The Difference.Go to Firemouth Grill:s 1 l 1 l 1 r.Pickup a passenger going to What's The Difference.Go to What's The Difference:w 1 l 1 r 2 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 3 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.

Pruébalo en línea!

Sin golf:

Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 1st left 1st left 2nd right.
Pickup a passenger going to Cyclone.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 1st right.
Go to Cyclone: north 1st left.
Pickup a passenger going to Firemouth Grill.
Pickup a passenger going to Joyless Park.
Go to Firemouth Grill: south 1st left 2nd left 1st right.
Go to Joyless Park: east 1st left 3rd right.
[i]
[Check next value n-i]
Go to Zoom Zoom: west 1st right 2nd left 2nd right.
Go to Sunny Skies Park: west 2nd left.
Pickup a passenger going to Cyclone.
Go to Cyclone: north 1st left.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Sunny Skies Park.
Go to Joyless Park: north 2nd right 2nd right 2nd left.
Pickup a passenger going to Cyclone.
Go to Sunny Skies Park: west 1st right 2nd left 2nd left 1st left.
Go to Cyclone: north 1st left.
Pickup a passenger going to Joyless Park.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer: north 2nd right 2nd right 1st right.
Pickup a passenger going to Cyclone.
Go to Cyclone: east 1st left 1st left 2nd left.
Pickup a passenger going to Trunkers.
Pickup a passenger going to Equal's Corner.
Go to Trunkers: south 1st left.
Pickup a passenger going to Equal's Corner.
Go to Equal's Corner: west 1st left.
Switch to plan "F" if no one is waiting.
Pickup a passenger going to Knots Landing.
Go to Firemouth Grill: north 3rd right 1st left 1st right.
Pickup a passenger going to The Underground.
Go to The Underground: east 1st left.
Pickup a passenger going to Firemouth Grill.
Go to Knots Landing: north 2nd right.
Go to Firemouth Grill: west 1st left 2nd right.
Go to Joyless Park: east 1st left 3rd right.
Switch to plan "N".
[F]
[Value not a divisor]
Go to Joyless Park: north 3rd right 1st right 2nd left 4th right.
[N]
Pickup a passenger going to The Underground.
Go to The Underground: west 1st left.
Switch to plan "E" if no one is waiting.
Pickup a passenger going to Joyless Park.
Go to Joyless Park: north 1st right.
Switch to plan "i".
[E]
Go to Sunny Skies Park: north 3rd left 2nd left 1st left.
Pickup a passenger going to What's The Difference.
Go to Firemouth Grill: south 1st left 1st left 1st right.
Pickup a passenger going to What's The Difference.
Go to What's The Difference: west 1st left 1st right 2nd right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: east 3rd right.
Pickup a passenger going to Post Office.
Go to Post Office: north 1st left 1st right.

Explicación:

Convert stdin to a number and store it in three locations for three purposes:
   Original (Sunny Skies Park)
   Counter for tested values (Joyless Park)
   Counter for divisors found (Firemouth Grill)
Divide the original by each Joyless Park value in turn.
If the division result equals the truncated division result, then it's a divisor.
When a divisor is found, subtract one from Firemouth Grill.
Repeat until Joyless Park hits zero.
Pickup the original from Sunny Skies Park and subtract the value from Firemouth Grill.
Convert the result to a string and print to stdout.
Tostadas de ingeniero
fuente
2

Japt , 3 bytes

â l

-m La bandera es para ejecutar todos los casos de prueba.

Intentalo

Encarnación de la ignorancia
fuente
2

Fórmula Excel, 42 28 bytes

Editar: me acabo de dar cuenta de que no necesito usar INDIRECT , ahorrando 14 bytes!

Lo siguiente debe ingresarse como una fórmula de matriz ( Ctrl+ Shift+ Enter):

=SUM(--NOT(MOD(N,ROW(1:N))))

Donde N es el número a probar.

Ejemplos:

{SUM(--NOT(MOD(32,ROW(1:32))))}
Result: 6
{SUM(--NOT(MOD(144,ROW(1:144))))}
Result: 15

Explicación:

SUM(--NOT(MOD(N,ROW(1:N))))       Full formula

                ROW(1:N)          Generates an array of row numbers e.g {1;2;3;4;...N}
          MOD(N,ROW(1:N))         Does N MOD {1;2;3;4;,...N}
      NOT(MOD(N,ROW(1:N)))        Coerces zeros to ones, so that they may be counted, but actually returns an array of TRUE;FALSE;FALSE;...
    --NOT(MOD(N,ROW(1:N)))        Coerces the TRUEs to 1s and FALSEs to 0s.
SUM(--NOT(MOD(N,ROW(1:N))))       Sum the ones for the result.
i_saw_drones
fuente
2

05AB1E , 2 bytes

Ñg

Pruébelo en línea o verifique todos los casos de prueba .

Explicación:

Bastante sencillo, pero aquí está de todos modos:

Ñ   # Push a list of divisors of the (implicit) input-integer
    #  i.e. 100 → [1,2,4,5,10,20,25,50,100]
 g  # Pop and push the length of this list
    #  i.e. [1,2,4,5,10,20,25,50,100] → 9
    # (which is output implicitly as result)
Kevin Cruijssen
fuente
1

Mathematica, 16 bytes

Length@*Divisors

Composición de funciones simples de empotrados.

Martin Ender
fuente
1

Minkolang 0.13 , 16 bytes

ndd[0ci1+%,-]-N.

Verifique todos los casos aquí.

Explicación

ndd           Takes number from input and duplicates it twice (n)
[             Opens for loop that runs n times
 0c           Copies bottom of stack to top (n)
   i1+        Loop counter + 1 (d)
      %       Modulo - pops d,n, then pushes n%d
       ,      Not - 1 if equal to 0, 0 otherwise
        -     Subtract
         ]    Close for loop
-             Subtract (n - 1 for each non-divisor)
N.            Output as number and stop.
El'endia Starman
fuente