Étant donné un entier positif n , calculer la valeur de la fonction Mertens M ( n ) où
et μ ( k ) est la fonction de Möbius où μ ( k ) = 1 si k a un nombre pair de facteurs premiers distincts, -1 si k a un nombre impair de facteurs premiers distincts, et 0 si les facteurs premiers ne sont pas distincts.
- Il s'agit de code-golf, alors créez le code le plus court pour une fonction ou un programme qui calcule la fonction Mertens pour un entier d'entrée n > 0.
- Il s'agit de la séquence OEIS A002321 .
Cas de test
n M(n)
1 1
2 0
3 -1
4 -1
5 -2
6 -1
7 -2
8 -2
9 -2
10 -1
117 -5
5525 5
7044 -25
8888 4
10000 -23
Réponses:
Gelée , 6 octets
Essayez-le en ligne! ou vérifiez les cas de test plus petits . (Prend un certain temps)
Contexte
Cela utilise la propriété
de A002321 , ce qui conduit à la formule récursive suivante.
Comment ça fonctionne
la source
Mathematica,
2220 octetsMerci à @miles pour avoir économisé 2 octets.
Explication
Générez une liste de 1 à l'entrée.
Trouver
MoebiusMu
chaque numéroAdditionnez le résultat.
la source
Python 2,
4537 octetsTestez-le sur Ideone .
Contexte
Cela utilise la propriété
de A002321 , ce qui conduit à la formule récursive suivante.
Comment ça fonctionne
Nous utilisons la récursivité non seulement pour calculer M pour les quotients, mais aussi pour calculer la somme de ces images. Cela économise 8 octets sur l'implémentation simple et suivante.
Lorsque f est appelé avec un seul argument n , l'argument optionnel k prend par défaut la valeur 2 .
Si n = 1 , on
n<k
obtient vrai et f renvoie cette valeur. Ceci est notre cas de base.Si n> 1 ,
n<k
renvoie initialement False et le code suivantor
est exécuté.f(n/k)
calcule récursivement un terme de la somme, qui est soustrait de la valeur de retour def(n,k+1)
. Ce dernier incrémente k et appelle récursivement f , itérant ainsi sur les valeurs possibles de k . Une fois n <k + 1 ou n = 1 ,f(n,k+1)
retournera 1 , mettant fin à la récursivité.la source
05AB1E ,
1615 octetsExplication
Essayez-le en ligne!
la source
Brachylog ,
2220 octetsEssayez-le en ligne!
Explication
la source
Gelée , 9 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Haskell,
2927 octetsla source
Gelée , 7 octets
Pas très efficace; les déterminants sont difficiles.
Essayez-le en ligne! ou vérifiez les cas de test plus petits . (Prend un certain temps)
Contexte
Cela utilise une formule de A002321 :
M (n) est le déterminant de la matrice booléenne A n × n , où a i, j vaut 1 si j = 1 ou i | j et 0 sinon.
Comment ça fonctionne
la source
PHP, 113 octets
Pour autant que je sache, php n'a rien à voir avec la fonctionnalité des nombres premiers, c'est donc une sorte de douleur. Il est probablement possible de faire mieux.
utiliser comme:
la source
Raquette 103 octets
Non golfé:
la source
CJam (20 octets)
Démo en ligne
Utilise la formule d'OEIS
et l'opérateur de mémorisation de CJam
j
.Dissection
la source
JavaScript (ES6), 50 octets
Port de @ Dennis's Python answer.
la source
Julia,
2625 octetsEssayez-le en ligne!
Contexte
Cela utilise la propriété
de A002321 , ce qui conduit à la formule récursive suivante.
Comment ça fonctionne
Nous redéfinissons l'opérateur unaire ! pour nos besoins.
n÷(2:n)
calcule tous les quotients requis, notre redéfini ! est mappé sur eux, et enfin la somme de tous les appels récursifs est soustraite de 1 .Malheureusement,
ne fonctionne pas car la somme dyadique s'étouffera sur une collection vide.
corrige cela, mais il n'enregistre aucun octet et renvoie True pour l'entrée 1 .
la source
C,
51 5047 octetsEdit: Merci à @Dennis pour -3 octets!
la source
Scala, 53 octets
Un port de la réponse de Dennis en pythin.
J'ai appelé la méthode
?
, qui est un jeton qui ne colle pas aux lettres.la source
Pyth, 12 octets
Définit une fonction
y
qui prend len
.Suite de tests ici. (Notez que la fin
y
ici est d'appeler réellement la fonction déclarée.)la source
En fait,
181716 octetsSuggestions de golf bienvenues. Essayez-le en ligne!
Ungolfing
la source
PARI / GP, 24 octets
la source
J, 19 octets
Calcule la fonction Mertens en
n
utilisant la somme de la fonction Möbius sur la plage[1, n]
.Usage
Explication
la source