Se 1 não é contado como um fator, então
- 40 tem dois fatores vizinhos (4 e 5)
- 1092 tem dois fatores vizinhos (13 e 14)
- 350 não possui dois fatores vizinhos (dos fatores 2, 5, 7, 10, 14, 25, 35, 50, 70 e 175, dois não são consecutivos)
A proporção de números inteiros positivos que possuem essa propriedade é a proporção divisível por qualquer um dos 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56,…. Se calcularmos apenas a proporção divisível pelo primeiro n destes, obteremos uma aproximação que será mais precisa à medida que n aumenta.
Por exemplo, para n = 1 , encontramos a proporção de números inteiros divisíveis por 2 × 3 = 6, que é 1/6. Para n = 2 , todos os números inteiros divisíveis por 3 × 4 = 12 também são divisíveis por 6, portanto a aproximação ainda é 1/6. Para n = 3 , a proporção de números inteiros divisíveis por 6 ou 20 é 1/5 e assim por diante.
Aqui estão os primeiros valores:
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
Para valores de n entre os valores fornecidos, a saída deve ser igual à saída do valor acima (por exemplo, n = 5 → 1/5).
Seu programa deve receber n e gerar uma resposta em fração ou decimal. Você pode aceitar n em qualquer deslocamento (por exemplo, indexação 0 ou 2) nessa sequência, em vez de 1).
Para saída decimal, seu programa deve ter precisão de pelo menos 5 dígitos para todos os casos de teste fornecidos.
A pontuação é código-golfe , com o menor ganho de código.
Inspirado em Que proporção de números inteiros positivos tem dois fatores que diferem por 1? por marty cohen - especificamente, pela resposta de Dan .
Respostas:
Geléia ,
14 1310 bytes-1 usando a idéia de Erik the Outgolfer para obter a média de uma lista de zeros e uns.
-3 usando a indexação 3 (conforme permitido na pergunta) - obrigado a Dennis por apontar isso.
Um link monádico que aceita um número inteiro
n+2
, que gera uma flutuação.(Começou como
+2µḊPƝḍⱮ!§T,$Ẉ
, tendon
e cedendo[numerator, denominator]
, não reduzido)Quão?
fonte
!
vez deæl/
... Ah, as alegrias das regras mudam enquanto dorme.P
para descer para 13?Ẹ€
? Receio queP
seja o mesmo׃1$
, então não funcionará. (E isso seria 14 de qualquer maneira ...) Se, em vez deæl/
, talvez ( afinalP
é LCM * k).æl/
æl/
eu acho. (O golfe noturno tem problemas ...) EDIT: Sim, embora eu tenha que reduzir a discussão sobre o TIO para4
...: P05AB1E , 15 bytes
Porto da resposta de @JonathanAllan Jelly , também extremamente lento.
Experimente online ou verifique os três primeiros casos de teste .
Explicação:
fonte
JavaScript (ES6),
94 9290 bytesEconomizou 2 bytes graças a @Shaggy e mais 2 bytes a partir daí
Retorna uma aproximação decimal.
Experimente online!
JavaScript (ES6), 131 bytes
Experimente online!
fonte
Gelatina , 12 bytes
Experimente online!
-2 graças à sugestão de Jonathan Allan de substituir o LCM pelo produto (ou seja, o LCM multiplicado por um número inteiro).
Dennis percebeu que eu também posso indexar 2.
fonte
Carvão , 26 bytes
Experimente online! Link é a versão detalhada do código. Desesperadamente ineficiente (O (n! ²)), portanto, só funciona
n=4
no TIO. Explicação:Insira
n
e calcule os primeirosn
produtos dos fatores vizinhos.Pegue o produto de todos esses fatores e use-o para calcular a proporção de números que possuem pelo menos um desses fatores.
A versão menos lenta de 30 bytes é apenas O (n!); Portanto, pode fazer até
n=6
no TIO:Experimente online! Link é a versão detalhada do código.
A versão mais rápida de 46 bytes é apenas O (lcm (1..n + 2)), portanto, pode fazer atén=10
no TIO:Experimente online! Link é a versão detalhada do código.A versão mais rápida de 45 bytes é apenas O (2ⁿ), portanto, pode fazer até
n=13
no TIO:Experimente online! Link é a versão detalhada do código.
A versão mais rápida de 54 bytes usa LCM mais eficiente e pode fazer o mesmo
n=18
no TIO:Experimente online! Link é a versão detalhada do código.
fonte
Wolfram Language (Mathematica) ,
69686152 bytesExperimente online!
Indexado em 3. No começo eu ia usar,
LCM@@
mas percebi que#!
seria mais curto ... mas agora há muita memória paraRange[#!]
...Conseguiu reduzir a condição em 2 bytes, o que foi legal.
Solução numérica mais antiga (56 bytes):
Experimente online!
2-indexado. Mais eficiente quando
#!>5^8
(#>9
, supondo que#
seja um número inteiro).fonte
Python 2 , 78 bytes
Experimente online!
Retorna o decimal aproximado para +5 dígitos; usa a abordagem de força bruta ingênua que xnor sugere nos comentários sobre a questão.
fonte