Séquences de nombres composites
Inspiré par cette question
Étant donné un entier positif n , votre code doit sortir les n premiers nombres composites.
Entrée sortie
Vous pouvez écrire un programme ou une fonction. L'entrée se fait via STDIN ou l'argument de fonction et la sortie est vers STDOUT, ou la valeur de retour de la fonction.
La sortie peut être une liste, un tableau ou une chaîne.
Exemples
0 ->
1 -> 4
2 -> 4, 6
3 -> 4, 6, 8
13 -> 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22
Règles
Comme toujours, les failles standard sont interdites.
Les intégrées qui génèrent des nombres premiers ou composites ne sont pas autorisées.
Les éléments intégrés relatifs aux nombres premiers ou composites ne sont pas autorisés.
Réponses:
Pyth - 10 octets
Une réponse valable. Utilise le théorème de Wilson .
Essayez-le en ligne ici .
Ancienne réponse
Pyth - 6 caractères
Utilisations pour builtin factorisation , pas de vérification de premier choix.
Essayez-le en ligne ici .
la source
Pyth, 11 octets
Génère une liste trop grande de produits de toutes les combinaisons de [2, n] et tronque.
la source
1
ou2
.TeX, 382 octets
Parce que vous pouvez.
Le nombre dans la dernière ligne est le nombre de nombres composites que vous voulez avoir.
Il s'agit d'un simple testeur de diviseur.
\d
vérifie si#2
divise#1
.\i
appelle\d
tous les diviseurs possibles (c'est-à-dire <#1
).\l
répertorie les premiers#2
nombres pour lesquels\i
renvoie 0.Version non golfée (enfin, semi-golfée):
la source
Python, 57
Moins golfé:
L'idée est de générer l'ensemble des nombres composites en multipliant toutes les paires de nombres naturels sauf 0 et 1. Ensuite, triez cet ensemble et prenez les premiers
n
éléments. Il suffit de prendre avec lui le produit cartésien de l'ensemble{2, 3, ..., n+2}
, que l'on peut obtenir enrange(n)
remontant de 2.Pour jouer au golf, nous faisons un tour de golf classique consistant à stocker deux valeurs
(a,b)
dansrange(n)
une seule valeurk
dansrange(n*n)
, et à les extraire sousa=k/n, b=k%n
.la source
Java 8,
9897 octetsExpansé, avec passe-partout:
la source
R, 53 octets
Comment ça fonctionne
Ceci est également basé sur le théorème de Wilson et tout ce qu'il fait est de parcourir une plage de
1:n*n
et d'extraire les nombres composites selon le théorème mentionné ci-dessus. J'ai ajouté+3
parcen*n
que la plage n'est pas assez grande pour lesn < 3
entiersLe seul problème avec cette solution est que (malheureusement) R perd de la précision pour une factorielle suffisamment grande, donc cela ne fonctionnera pas correctement pour
n > 19
la source
CJam,
2018 octetsEssayez-le en ligne
N'utilise pas d'opérateurs principaux ou de factorisation intégrés. Vérification assez brutale pour les nombres composites.
Une observation qui est utilisée ici est que nous pouvons facilement calculer une limite supérieure sûre pour les nombres que nous devons tester. Étant donné que chaque deuxième nombre supérieur à 4 est composite,
4 + n * 2
est une limite supérieure pour le n-ième nombre composite.Sur la base d'une suggestion de @Dennis, la dernière implémentation utilise en fait
n * 5
comme limite supérieure, ce qui est beaucoup moins efficace, mais 2 octets plus court.Explication:
la source
Javascript ES6, 88 caractères
la source
f=
est légale.n=>eval('for(r=[],q=2;r.length-n;/^(..+)\\1+$/.test("-".repeat(++q))&&r.push(q))r')
n&&!r[n-1]
: '| C'est la même longueur quer.length<n
- un caractère plus court quer.length!=n
- mais c'est censé être Code Golf, non? : -]Haskell,
4946 octetsExemple d'utilisation:
Comment ça fonctionne
la source
F #, 78 octets
Expliqué:
la source
i
deux fois la variable . Je ne connais pas trop F #, mais ne pourriez-vous peut-être pas l'utiliserj
?C ++ 109
Non golfé
la source
while
parfor
.Julia, 103 octets
Cela utilise le théorème de Wilson.
Non golfé:
la source
ECMAScript 6 -
1079184 octetsLa fonction renvoie un tableau des premiers
n
nombres composites.anciennes versions
Production
la source
Haskell , 44 octets
Fortement inspiré par la réponse précédente de Nimi , remplaçant le prédicat par un plus court de 2 octets basé sur
any
un lambda sans point au lieu d'une compréhension de liste imbriquée.Essayez-le en ligne!
( merci à Laikoni pour le lien TIO précis)
Explication:
la source