Si 1 n'est pas compté comme un facteur, alors
- 40 a deux facteurs voisins (4 et 5)
- 1092 a deux facteurs voisins (13 et 14)
- 350 n'a pas deux facteurs voisins (sur ses facteurs 2, 5, 7, 10, 14, 25, 35, 50, 70 et 175, aucun n'est consécutif)
La proportion d'entiers positifs qui ont cette propriété est la proportion divisible par l'un de 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56,…. Si nous calculons uniquement la proportion divisible par les n premiers de ceux-ci, nous obtenons une approximation qui devient plus précise à mesure que n augmente.
Par exemple, pour n = 1 , nous trouvons la proportion d'entiers divisible par 2 × 3 = 6, qui est 1/6. Pour n = 2 , tous les entiers divisibles par 3 × 4 = 12 sont également divisibles par 6, donc l'approximation est toujours 1/6. Pour n = 3 , la proportion d'entiers divisibles par 6 ou 20 est 1/5, et ainsi de suite.
Voici les premières valeurs:
1 1/6 0.16666666666666666
3 1/5 0.20000000000000000
6 22/105 0.20952380952380953
9 491/2310 0.21255411255411255
12 2153/10010 0.21508491508491510
15 36887/170170 0.21676558735382265
21 65563/301070 0.21776663234463747
24 853883/3913910 0.21816623274423785
27 24796879/113503390 0.21846817967287144
Pour les valeurs de n entre les valeurs fournies, la sortie doit être la même que la sortie pour la valeur ci-dessus (par exemple n = 5 → 1/5).
Votre programme doit prendre n et produire une réponse fractionnaire ou décimale. Vous pouvez prendre n à n'importe quel décalage (par exemple, l'indexation 0 ou l'indexation 2 dans cette séquence, au lieu de l'indexation 1).
Pour une sortie décimale, votre programme doit être précis à au moins 5 chiffres pour tous les cas de test donnés.
La notation est le code-golf , avec le gain de code le plus court.
Inspiré par Quelle proportion d'entiers positifs a deux facteurs qui diffèrent de 1? par marty cohen - en particulier, par la réponse de Dan .
Réponses:
Gelée ,
14 1310 octets-1 en utilisant l'idée d'Erik l'Outgolfer pour prendre la moyenne d'une liste de zéros et de uns.
-3 en utilisant l'indexation 3 (comme le permet la question) - merci à Dennis de l'avoir signalé.
Un lien monadique acceptant un entier
n+2
, ce qui donne un flottant.Essayez-le en ligne! (très inefficace car il teste la divisibilité sur la plage)[ 2 , ( n + 2 ) ! ]
(Commencé comme
+2µḊPƝḍⱮ!§T,$Ẉ
, prenantn
et cédant[numerator, denominator]
, non réduit)Comment?
la source
!
au lieu deæl/
... Ah, les joies des règles changeant pendant le sommeil.P
pour descendre à 13?Ẹ€
? J'ai bien peur,P
c'est pareil׃1$
, donc ça ne marchera pas. (Et ce serait 14 de toute façon ...) Si au lieu deæl/
, peut-être (P
est LCM * k après tout).æl/
æl/
je suppose. (Le golf des noctambules a des problèmes ...) EDIT: Oui, bien que je4
05AB1E , 15 octets
Port de @JonathanAllan 's Jelly answer , donc aussi extrêmement lent.
Essayez-le en ligne ou vérifiez les trois premiers cas de test .
Explication:
la source
JavaScript (ES6),
94 9290 octets2 octets enregistrés grâce à @Shaggy + 2 octets supplémentaires à partir de là
Renvoie une approximation décimale.
Essayez-le en ligne!
JavaScript (ES6), 131 octets
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
-2 grâce à la suggestion de Jonathan Allan de remplacer le LCM par le produit (ie le LCM multiplié par un entier).
Dennis a remarqué que je peux aussi indexer 2.
la source
Fusain , 26 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Désespérément inefficace (O (n! ²)) donc ne fonctionne que
n=4
sur TIO. Explication:Saisissez
n
et calculez les premiersn
produits des facteurs voisins.Prenez le produit de tous ces facteurs et utilisez-le pour calculer la proportion de nombres ayant au moins un de ces facteurs.
La version moins lente de 30 octets n'est que O (n!) Donc peut faire jusqu'à
n=6
sur TIO:Essayez-le en ligne! Le lien est vers la version détaillée du code.
La version plus rapide de 46 octets est uniquement O (lcm (1..n + 2)), donc peut faire jusqu'àn=10
sur TIO:Essayez-le en ligne! Le lien est vers la version détaillée du code.La version plus rapide de 45 octets est uniquement O (2ⁿ), donc peut faire jusqu'à
n=13
sur TIO:Essayez-le en ligne! Le lien est vers la version détaillée du code.
La version la plus rapide de 54 octets utilise un LCM plus efficace, donc peut faire jusqu'à
n=18
sur TIO:Essayez-le en ligne! Le lien est vers la version détaillée du code.
la source
Wolfram Language (Mathematica) ,
69686152 octetsEssayez-le en ligne!
3 indexés. Au début, j'allais utiliser
LCM@@
mais j'ai réalisé que ce#!
serait plus court ... mais maintenant, il y a beaucoup de mémoire pourRange[#!]
...J'ai réussi à jouer au golf sur 2 octets, ce qui était bien.
Solution numérique plus ancienne (56 octets):
Essayez-le en ligne!
2 indexés. Plus efficace lorsque
#!>5^8
(#>9
, en supposant qu'il#
s'agit d'un entier).la source
Python 2 , 78 octets
Essayez-le en ligne!
Renvoie la décimale approximative à +5 chiffres; utilise l'approche de force brute naïve suggérée par xnor dans les commentaires sur la question.
la source