Nombres semi-parfaits
Un nombre semi-parfait / pseudo-parfait est un entier égal à la somme d'une partie ou de la totalité de ses diviseurs (à l'exclusion de lui-même). Les nombres qui sont égaux à la somme de tous leurs diviseurs sont parfaits.
Divisors of 6 : 1,2,3
6 = 1+2+3 -> semiperfect (perfect)
Divisors of 28 : 1,2,4,7,14
28 = 14+7+4+2+1 -> semiperfect (perfect)
Divisors of 40 : 1,2,4,5,8,10,20
40 = 1+4+5+10+20 or 2+8+10+20 -> semiperfect
Primitif
Un nombre semi-parfait primitif est un nombre semi-parfait sans diviseurs semi-parfait (sauf lui-même :))
Divisors of 6 : 1,2,3
6 = 1+2+3 -> primitive
Divisors of 12 : 1,2,3,4,6
12 = 2+4+6 -> semiperfect
Comme références, veuillez utiliser la série OEIS A006036 pour les nombres semi-parfaits primitifs et A005835 pour les semi- défauts parfaits.
Objectif
Écrivez un programme ou une fonction dans n'importe quelle langue. Il prendra en entrée un nombre n en tant que paramètre de fonction ou de STDIN / l'alternative la plus proche de votre langue, et affichera tous les nombres semi-parfaits primitifs de 1 à n (inclus).
La sortie doit être formatée comme 6[separator]20[separator]28[separator]88...
où [séparateur] est soit une nouvelle ligne, un espace ou une virgule. Il ne doit pas y avoir de [séparateur] de départ ni de fin.
Modifier: vous pouvez laisser une nouvelle ligne de fin
Exemples
contribution :
5
production :
contribution :
20
production :
6
20
contribution :
100
production :
6 20 28 88
Notation
C'est le code-golf, donc le code le plus court en octets gagne.
N'essayez pas de nous tromper avec des échappatoires s'il vous plaît :).
Je serais heureux que vous puissiez laisser une explication de votre code de golf une fois que vous pensez que vous avez fini de le jouer au golf!
K
àY
construireY
, ce qui est nécessaire ailleurs. Cependant, je pouvais faire l'impression séparément, comme avecaYKK
au lieu deeaYK
. Cependant, c'est 4 octets dans les deux cas.Julia,
161149 octetsCela crée une fonction sans nom qui accepte un entier en entrée et imprime les nombres dans STDOUT séparés par une nouvelle ligne. Pour l'appeler, donnez-lui un nom, par exemple
f=n->...
.Non golfé + explication:
Exemples:
la source
JavaScript ( ES6 ) 172
Exécutez l'extrait ci-dessous pour tester
la source
CJam, 54 octets
Cette solution semble un peu gênante, mais comme il y a eu peu de réponses, et aucune dans CJam, j'ai pensé la publier quand même:
Une grande partie de l'incrément par rapport à la solution Pyth publiée vient du fait que, pour autant que je puisse trouver, CJam n'a pas d'opérateur pour énumérer tous les sous-ensembles d'un ensemble. Il a donc fallu du travail pour compléter cela avec les opérateurs disponibles. Bien sûr, s'il y a en fait un simple opérateur que j'ai manqué, je vais avoir l'air un peu idiot. :)
Explication:
Essayez-le en ligne
la source
PHP, 263 octets
Essayez-le en ligne!
Étendu
la source
Gelée , 22 octets
Essayez-le en ligne!
Explication
la source