Non, je ne veux pas dire ϕ = 1.618...
et π = 3.14159...
. Je veux dire les fonctions .
- φ (x) est le nombre d’entiers inférieurs ou égaux à
x
qui sont relativement premiers àx
. - π (x) est le nombre de nombres premiers inférieurs ou égaux à
x
. - Disons que "pas pi" est alors π̅ (x) et définissons-le comme étant le nombre de composites inférieur ou égal à
x
.
Tâche
Étant donné un entier strictement positif x
, calculez φ (π̅ (x)) . La notation est en octets.
Exemples
Chaque ligne comprend l’entrée (de 1 à 100 inclus) et la sortie correspondante, séparées par un espace.
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 2
9 2
10 4
11 4
12 2
13 2
14 6
15 4
16 6
17 6
18 4
19 4
20 10
21 4
22 12
23 12
24 6
25 8
26 8
27 16
28 6
29 6
30 18
31 18
32 8
33 12
34 10
35 22
36 8
37 8
38 20
39 12
40 18
41 18
42 12
43 12
44 28
45 8
46 30
47 30
48 16
49 20
50 16
51 24
52 12
53 12
54 36
55 18
56 24
57 16
58 40
59 40
60 12
61 12
62 42
63 20
64 24
65 22
66 46
67 46
68 16
69 42
70 20
71 20
72 32
73 32
74 24
75 52
76 18
77 40
78 24
79 24
80 36
81 28
82 58
83 58
84 16
85 60
86 30
87 36
88 32
89 32
90 48
91 20
92 66
93 32
94 44
95 24
96 70
97 70
98 24
99 72
100 36
Utilisez ce lien pour calculer la sortie attendue pour toute entrée. En outre, une liste des entrées et des sorties x <= 1000
est fournie ici sur pastebin . (Généré avec ce programme Minkolang .)
Classements
Voici un extrait de pile permettant de générer 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
Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de classement:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
la source
Réponses:
GS2 ,
12 à10 octetsLe code source utilise le codage CP437 . Essayez-le en ligne!
Essai
Comment ça fonctionne
la source
Regex (.NET),
122113 octetsEn supposant que les entrées et les sorties soient unaires, et que la sortie provienne de la correspondance principale de l'expression régulière.
Répartition de la regex:
^(?=((?=.*$(?<=^(\3+(.+.))(.*?(?>(.\4)?)))).)+(.*))
calcule π̅ (x) et capture le reste de la chaîne dans le groupe de capture 6 pour l'assertion dans la deuxième partie..*$
positionne le pointeur à la fin de la chaîne pour avoir le nombre entierx
dans une direction.(?<=^(\3+(.+.))(.*?(?>(.\4)?)))
correspond de droite à gauche et vérifie le nombre composé en passant de x à 0.(.*?(?>(.\4)?))
est une "variable" qui commence à 0 dans la première itération et continue à partir du nombre de l'itération précédente et boucle jusqu'à x. Étant donné que le plus petit numéro composé est 4, la correspondance(.\4)?
ne manque jamais si le groupe de capture 4 est disponible.^(\3+(.+.))
vérifie ce qui reste de la "variable" ci-dessus (c'est-à-direx - "variable"
) s'il s'agit d'un nombre composé.((?=.*(?=\6$)(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))).)+
calcule φ (π̅ (x)) en limitant les opérations de gauche à droite avec(?=\6$)
..*(?=\6$)
positionne le pointeur sur π̅ (x). Notons y = π̅ (x).(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))
correspond de droite à gauche et vérifie l’amorce relative en passant de (y - 1) à 0(.+?(?>\9?))
est une "variable" qui commence à 1 dans la première itération et continue à partir du nombre dans l'itération précédente et boucle jusqu'à y(?!(.+.)\8*(?=\6$)(?<=^\8+))
correspond de gauche à droite 1 et vérifie si la "variable" et y sont des nombres premiers premiers.(.+.)\8*(?=\6$)
choisit un diviseur de "variable" qui est supérieur à 1 et un effet secondaire est que nous avons le nombre entier y à gauche.(?<=^\8+)
vérifie si le diviseur de "variable" est également le diviseur de y.1 Dans .NET, Look-ahead définit la direction sur LTR au lieu de suivre la direction actuelle. Look-behind définit la direction vers RTL au lieu de l'inverser.
Testez l'expression régulière sur RegexStorm .
La révision 2 supprime les groupes non capturés et utilise des groupes atomiques au lieu de la syntaxe conditionnelle.
la source
J,
1514 octetsCeci est un verbe tacite, monadique. Essayez en ligne avec J.js .
Comment ça fonctionne
la source
Sérieusement , 27 octets
Oui, j'ai battu CJam! Essayez-le en ligne
Explication (
a
fait référence au haut de la pile,b
fait référence au second du haut):Remarque: depuis l'affichage de cette réponse, j'ai ajouté les fonctions pi et phi à Sérieusement. Voici une réponse non compétitive avec ces fonctions:
Explication (certaines commandes sont décalées pour ne pas en superposer d'autres):
la source
Julia,
5250 octetsCela crée une fonction non nommée qui accepte un entier et renvoie un entier. Pour l'appeler, donnez-lui un nom, par exemple
f=x->...
.Ungolfed:
la source
sum
au lieu decount
pour sauvegarder quelques caractères. C'est un peu frustrant, cependant - l'autre façon de compter les nombres premierssum(isprime,1:x)
est exactement la même longueur queendof(primes(x))
.sum
échoue pour les collections vides etcount
renvoie 0. Par conséquentsum
, le résultat souhaité ne sera pas obtenux<4
.Mathematica, 24 octets
la source
PhiNotPi@#&
: 11 octets: PPyth, 14 octets
Démonstration , vérificateur
Nous calculons les composites à l'aide d'un filtre simple, prenons sa longueur et l'enregistrons dans
J
. Ensuite, nous prenons le gcd deJ
avec chaque nombre jusqu’àJ
, et comptons combien de résultats sont égaux à 1.la source
Minkolang 0,11 , 12 octets (NON concurrentiel)
Cette réponse n'est pas compétitive. J'ai implémenté pi et phi en tant qu'éléments intégrés avant de poster la question, ce qui me donne un avantage injuste. Je poste ceci uniquement pour ceux qui sont intéressés par la langue.
Essayez ici.
Explication
la source
CJam, 28 octets
Essayez ce violon dans l'interpréteur CJam ou vérifiez tous les cas de test à la fois .
Comment ça fonctionne
la source
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
. Est-ce correct?Python, 137
139la source
range(n) if
et])) if
Retina , 48 octets
Essayez-le en ligne!
Explication
Convertir une entrée en unaire.
Comptez les nombres composés non supérieurs à l’entrée en comptant la fréquence à laquelle vous pouvez faire correspondre une chaîne composée d’au moins deux répétitions d’un facteur d’au moins 2.
Convertir à nouveau unaire.
Calculez φ en comptant à partir de combien de positions il n'est pas possible de trouver un facteur (d'au moins 2) du suffixe à partir de cette position qui est aussi un facteur du préfixe (si nous trouvons un tel facteur, alors cela
i <= n
partage un facteur avecn
n'est donc pas coprime à cela). Le.
à la fin garantit que nous ne comptons pas zéro (pour lequel nous ne pouvons pas trouver un facteur d'au moins 2).la source
Regex (.NET),
8886 octetsEssayez-le en ligne! (En tant que programme Retina.)
Utilise la même entrée / sortie que la réponse de n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , c’est-à-dire une entrée unaire, et correspond à une sous-chaîne de la longueur du résultat.
Il serait peut-être possible de raccourcir cette étape en remplaçant l'un des groupes d'équilibrage ou les deux par des références en aval.
Alternative au même nombre d'octets:
Il existe également des alternatives pour la première moitié, par exemple, en utilisant un indicateur négatif au lieu d'un indicateur positif pour les nombres composés, ou l'utilisation d'un conditionnel également.
Explication
Je suppose que vous avez une compréhension de base des groupes d'équilibrage , mais en bref, les groupes capturés dans .NET sont des piles (ainsi chaque fois que vous réutilisez le groupe capturé, la nouvelle capture est poussée au-dessus) et
(?<-x>...)
une capture de la pile apparaîtx
. C'est très utile pour compter les choses.la source
PARI / GP, 27 octets
la source
Gelée , non en compétition
7 octets Cette réponse est non concurrente, car elle utilise un langage postérieur au challenge.
Comment ça fonctionne
la source
Octave,
5251Edit: sauvegardé 1 octet grâce à Thomas Kwa
Explication:
la source
PARI / GP, 35 octets
la source
SageMath 26 octets
Fonctionne bien même pour
n=0
etn=1
grâce à l'implémentation de Sage.la source
Gelée , 6 octets
Essayez-le en ligne!
Ceci est une collaboration entre Caird coinheringahhing et M. Xcoder dans le chat
Explication
la source
Gaia , 5 octets
Essayez-le en ligne!
la source
Ohm v2 , 7 octets
Essayez-le en ligne!
la source
MATL , 9 octets (non concurrents)
Cette réponse est sans concurrence, car la langue postdate le défi.
Utilise la version (10.1.0) du langage / compilateur.
Essayez-le en ligne!
Explication
la source
GAP, 33 octets
Number(l,p)
compte combien d'éléments del
satisfairep
. Pour compenser le fait que 1 n'est ni premier ni composite, je dois soustraire de n un plus que le nombre de nombres premiers allant jusqu'à n. Au lieu de faire-1
deux octets, je commence la liste par -2 au lieu de 1 ou 2, ajoutant ainsi un nombre supplémentaire qui est considéré comme premierIsPrime
pour un seul octet supplémentaire.la source
Python 3.5 - 130 octets
S'il n'est pas acceptable de transmettre la fonction en tant que p (n, 0,0), alors +3 octets.
Cela profite du fait que j'utilise le théorème de Wilson pour vérifier si un nombre est composite et que je dois faire appel au module mathématique pour la fonction factorielle. Python 3.5 a ajouté une fonction gcd dans le module mathématique.
La première boucle du code incrémentera k de 1 si le nombre est composite et incrémentera de 0 sinon. (Bien que le théorème de Wilson ne concerne que les entiers supérieurs à 1, il considère que 1 est premier, nous permet donc de l'exploiter).
La seconde boucle passera ensuite sur la plage de nombres de composites et incrémentera g uniquement lorsque les valeurs de not pi et l sont co-prime.
g est alors le nombre de valeurs inférieures ou égales au nombre de nombres composés inférieurs ou égaux à n.
la source
Python 3 + sympy ,
5958 octets* -1 octet en remplaçant
compositepi(k)
park+~primepi(k)
.Essayez-le en ligne!
la source
05AB1E ,
118 octetsEssayez-le en ligne!
Cela pourrait ne pas être compétitif - je ne peux pas savoir quand 05AB1E a été faite.
Comment ça fonctionne
la source
Pyt , 6 octets
Explication:
Essayez-le en ligne!
la source
APL NARS, 38 octets, 19 caractères
13π est la fonction totale et 2π est la fonction de nombre premier <= son argument. Tester
la source
Ajouter ++ , 21 octets
Essayez-le en ligne!
Comment ça fonctionne
R
þP
þ
P
bL
1_
dR
Þ%
bL
G
!!
Oui, je voulais vraiment essayer le nouveau LaTex
la source