Il existe un assez grand nombre de fonctions génératrices principales. La plupart d'entre elles sont construites et sont basées sur le tamis d'Eratosthène, la fonction de Möbius ou le théorème de Wilson et sont généralement impossibles à calculer en pratique. Mais il y a aussi des générateurs, qui ont une structure très facile et qui ont été trouvés par accident.
En 2003, Stephen Wolfram a exploré une classe d’équations de récurrence imbriquée dans le cadre d’une expérience informatique en direct à l’Université d’été NKS. Un groupe de personnes autour de Matthew Frank a poursuivi avec d'autres expériences et a découvert une propriété intéressante de la simple récurrence
a(n) = a(n-1) + gcd(n,a(n-1))
avec la valeur de départ de a(1) = 7
. La différence a(n) - a(n-1) = gcd(n,a(n-1))
semblait toujours être 1 ou un prime. Les premières différences sont les suivantes ( OEIS A132199 ):
1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 3, 1, 5, 3, ...
Si nous omettons uniquement les 1, nous obtenons la séquence suivante ( OEIS A137613 ):
5, 3, 11, 3, 23, 3, 47, 3, 5, 3, 101, 3, 7, 11, 3, 13, 233, 3, 467, 3, 5, 3,
941, 3, 7, 1889, 3, 3779, 3, 7559, 3, 13, 15131, 3, 53, 3, 7, 30323, 3, ...
Eric S. Rowland a prouvé la primauté de chaque élément de cette liste quelques années plus tard. Comme vous pouvez le constater, les nombres premiers sont mélangés et certains d’entre eux apparaissent plusieurs fois. Il a également été prouvé que la séquence comprenait une infinité de nombres premiers distincts. De plus, on suppose que tous les nombres premiers impairs apparaissent.
Parce que ce générateur principal n'a pas été construit mais simplement trouvé par accident, le générateur principal s'appelle "se produisant naturellement" Mais notez que, dans la pratique, ce générateur est également très difficile à calculer. Il se trouve que le nombre premier p apparaît uniquement après (p–3)/2
des 1 consécutifs. Néanmoins, l'implémentation de ce premier générateur sera votre tâche.
Défi:
Ecrivez une fonction ou un programme qui affiche les premiers n
éléments de la séquence A137613
(la séquence sans les 1). Vous pouvez lire le numéro d'entrée n >= 0
via STDIN, un argument de ligne de commande, une invite ou un argument de fonction. Exportez les premiers n
éléments dans n'importe quel format lisible vers STDOUT ou renvoyez un tableau ou une liste avec ces valeurs.
C'est du code-golf. Par conséquent, le code le plus court gagne.
Classement:
Voici un extrait de pile permettant de générer à la fois un classement régulier et un aperçu des gagnants par langue. Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
a(n)-a(n-1)
n
être zéro?
//
) et l'expliquer dans votre soumission. Si quelqu'un n'est pas d'accord avec vous, vous pouvez toujours modifier votre message.