Um número superabundante é um número inteiro n que define um novo limite superior para sua razão com a função de soma do divisor σ. Em outras palavras, n é superabundante se, e somente se, para todos os números inteiros positivos x menores que n :
Para alguns dos valores:
n σ(n) σ(n)/n superabundant
1 1 1.0000 yes
2 3 1.5000 yes
3 4 1.3333 no
4 7 1.7500 yes
5 6 1.2000 no
6 12 2.0000 yes
7 8 1.1429 no
8 15 1.8750 no
9 13 1.4444 no
Uma lista mais longa deles (para casos de teste) pode ser encontrada em OEIS A004394 .
Um caso de teste negativo altamente recomendado (se o seu intérprete puder lidar com isso) é o 360360, porque está vinculado ao último número superabundante.
Desafio
Seu programa deve receber um único número inteiro positivo e gerar um valor de verdade ou falsey que representa se esse número inteiro é superabundante.
Como esse é o código-golfe , a resposta mais curta em bytes vence.
Æs÷$ÐṀ=
por 7 bytes. Eu não percebiÐṀ
rangified, isso é útil saber.360360
. De fato, esta foi a minha versão inicial360360
?360360
é o primeiro número pelo qual falharia (acho), porque é o primeiro número a vincular um resultado que ocorreu antes. (e nosso resultado seria[0, 1]
)Haskell , 73 bytes
-1 byte graças ao Sr. Xcoder. -7 bytes graças a Laikoni.
Experimente online!
O sistema de tipos de Haskell não é muito golfe ...
fonte
Haskell ,
646361 bytes-1 byte graças ao Sr. Xcoder .
-2 bytes graças a Lynn .
Experimente online!
fonte
Oitava , 41 bytes
Experimente online!
Explicação
fonte
J , 35 bytes
Agradecemos a Mr.Xcoder por encontrar o problema e a cole por corrigi-lo!
Experimente online!
fonte
360360
(veja o desafio para obter mais detalhes: um caso de teste negativo altamente recomendado é o 360360, porque está vinculado ao último número superabundante. ).#.~
(honestamente, a função soma total do divisor é muito boa). O que havia de errado era que, embora o pensamento de fazer{:=>./
seja inteligente, ele não satisfaz a parte "maior que" da questão.(1#.{:(]*0=|~)])\
. Algo está errado com isso, talvez você tenha alguma idéia?(1#.]*0=|~)1+i.
É um gancho e não se encaixam tão facilmente no lugar embora :)Julia 0,6 , 52 bytes
Experimente online!
Esta solução usa números racionais para garantir a correção em caso de igualdade. (O teste 360360 levou quase 10 minutos.)
Usando ponto flutuante, 2 bytes podem ser salvos com a divisão esquerda:
fonte
Pitão , 14 bytes
( FryAmTheEggman salvou 1 byte)
Experimente aqui! ou veja mais casos de teste.
Apenas minha submissão obrigatória ao Pyth, que provavelmente é jogável.
Quão?
fonte
05AB1E , 10 bytes
Experimente online! ou como um conjunto de testes
Explicação
fonte
360360
(veja o desafio para obter mais detalhes: um caso de teste negativo altamente recomendado é o 360360, porque está vinculado ao último número superabundante. ).Python 3 , 77 bytes
-1 byte graças a Rod. -3 bytes graças a Dennis.
Experimente online!
fonte
R usando
numbers
, 59 bytesfonte
Mathematica,
5350 bytesFunção pura. Toma um número inteiro como entrada e retorna
True
ouFalse
como saída.fonte
Tr@Divisors@#
funciona?Japt v2.0a0,
1216 bytesO cérebro privado de sono parece não melhorar ainda mais!
Retorna
1
para verdade ou0
para falsey.Tente
Sacrificado 4 bytes para manipular
360360
.Explicação
U
.Æ Ã
cria uma matriz de números inteiros de0
paraU-1
e passa cada um deles através da seguinte função comoX
.â
recebe os divisores deU
.÷U
divide cada um deles porU
.x
soma os resultados.Xâ
recebe os divisores deX
.÷X
divide cada um deles porX
.x
soma os resultados.>
verifica se o primeiro resultado é maior que o segundo.×
reduz a matriz resultante de booleanos por multiplicação.fonte
360360
outros números inteiros: um caso de teste negativo altamente recomendado (se o seu intérprete puder lidar com isso) é 360360, porque está vinculado ao último número superabundanteAPL + WIN, 37 bytes
Solicita a entrada da tela.
fonte
C (gcc), 99 bytes
Experimente online!
C, 108 bytes
Experimente online!
fonte
s
precisa retornar um flutuador?s(n)/n
coms(i)/i
.Rápido ,
120118 bytesDemora algum tempo (cerca de 6 segundos no TIO) a ser compilado devido às declarações implícitas de tipo no Swift.
Experimente online!
fonte
Gelatina , 12 bytes
Experimente online! ou Encontre todos os números superabundantes abaixo de 1000.
porque eu odeio pontos flutuantes.
fonte
Funky , 79 bytes
Explicado
Isso primeiro define a função
d
que é aσ
função e esta é a versão em golf doPodemos definir i como 0, porque
i*n%0
sempre será igual0*...
, portanto0
.A próxima metade disso define a função
f
, que é a função Superabandunce, e é apenas a forma de golfeE isso apenas verifica, como sugere a especificação do desafio, que todos os números inteiros de 1 a n-1 têm um valor
d(n)/n
menor que a entrada.Experimente online!
fonte
APL (Dyalog) , 33 bytes
Experimente online!
fonte
Casca , 9 bytes
Experimente online! Muito lento para o caso de teste 360360.
Explicação
fonte
£ü¤<§ṁ/ḊN
. Criando a lista inteira de números superabundantesPerl 5, 84 bytes
requer
-E
(grátis)uma implementação direta da especificação,
fonte
APL (NARS), 61 caracteres, 122 bytes
11π é a soma da função dos fatores
fonte