고밀도 번호 시퀀스


12

OEIS : A167171

조밀 수는 비 프라임 약수 많은 주요 제수 (약수로 자리 1을 포함하고) 그대로 가지고 숫자입니다. 마찬가지로, 소수 또는 소수의 두 소수의 곱입니다. 처음 100 개의 밀도는 다음과 같습니다.

2, 3, 5, 6, 7, 10, 11, 13, 14, 15, 17, 19, 21, 22, 23, 26, 29, 31, 33, 34, 35, 37, 38, 39, 41, 43, 46, 47, 51, 53, 55, 57, 58, 59, 61, 62, 65, 67, 69, 71, 73, 74, 77, 79, 82, 83, 85, 86, 87, 89, 91, 93, 94, 95, 97, 101, 103, 106, 107, 109, 111, 113, 115, 118, 119, 122, 123, 127, 129, 131, 133, 134, 137, 139, 141, 142, 143, 145, 146, 149, 151, 155, 157, 158, 159, 161, 163, 166, 167, 173, 177, 178, 179, 181, 183, 185, 187, 191, 193, 194

음수가 아닌 정수가 주어지면 n출력 dense(n). n0 인덱스 또는 1 인덱스 일 수 있습니다.

참조 구현 (Sage)

import itertools

def dense_numbers():
    n = 1
    while True:
        prime_divisors = [x for x in divisors(n) if x.is_prime()]
        non_prime_divisors = [x for x in divisors(n) if not x.is_prime()]
        if len(prime_divisors) == len(non_prime_divisors):
            yield n
        n += 1

N = 20

print itertools.islice(dense_numbers(), N, N+1).next()

온라인으로 사용해보십시오


너무 많은 소수 시퀀스 ... 나는 너무 많은 존재를
Beta Decay

2
@ βετѧΛєҫαγ Sexy Primes (͡ ° ͜ʖ ͡ °) 라는 소수도 있습니다 .
Adnan

@Adnan Oh myy; D
베타 부패

최대 값은 n얼마입니까?
R. Kap

@ R.Kap 당신이 선택한 언어로 갈 수 있습니다.
Mego

답변:


3

젤리 , 9 바이트

ÆE²Sḍ2µ#Ṫ

STDIN에서 읽고 1 기반 색인 작성을 사용합니다. 온라인으로 사용해보십시오!

작동 원리

ÆE²Sḍ2µ#Ṫ  Main link. No arguments. Implicit argument: 0

      µ#   Read an integer n from STDIN and execute the chain to the left for
           k = 0, 1, 2, ... until n of them return a truthy value.
           Return the array of matches.
ÆE           Compute the exponents of k's prime factorization.
  ²          Square each exponent.
   S         Compute the sum of all squares.
    ḍ2       Test if 2 is divisible by the result (true iff  the sum is 1 or 2).
        Ṫ  Tail; extract the last (n-th) matching value of k.

2

실제로 12 바이트

그의 알고리즘에 대한 Dennis의 모든 크레딧 .

`w♂N;*2%Y`╓N

온라인으로 사용해보십시오!

`w♂N;*2%Y`╓N

`        `     define a function
 w             prime factorization in exponent form:
               18 = (2^1)*(3^2) becomes [[2,1],[3,2]]
  ♂N           get the last element (exponent) of each sublist
    ;*         dot-product with self; equivalent to squaring
               each item and then taking the sum
      2%Y      test divisibility by 2
          ╓    first (input) solutions to the above function
           N   get the last element.

1

05AB1E, 12 11 바이트

1- 색인

µ             # while counter != input
 NÑ           # get divisors of current number
   p          # check if prime
    D         # duplicate
     O        # sum one copy
      s_O     # invert and sum the other copy
         Q½   # if equal increase counter

온라인으로 사용해보십시오


1

Brachylog , 17 바이트

:1yt.
1<.=$p#dl<3

온라인으로 사용해보십시오!

술어 0 (주 술어)

:1yt.
:1y     Find the first (input) solutions of predicate 1
   t    Last element
    .   Unify with output

술어 1 (보조 술어)

1<.=$p#dl<3
1<.            1 < output
  .=           assign a value to output
  . $p#d       output's prime factorization contains no duplicate
        l      and the length
         <3    is less than three

0

R, 93 바이트

dense=function(n){a=b=0;for(i in which(!n%%1:n))if(which(!i%%2:i)+1==i)a=a+1 else b=b+1;a==b}

경고를 던지는 경향이 있습니다. 그것은 실제로 문제가되지 않습니다. 경고를 허용하면 5 바이트가 절약됩니다.

언 골프

dense=function(n){
     a=b=0                                #Initializing
     factors = which(!n%%1:n)             #Finds all factors
     for(i in factors)                    #Loops through factors
         prime = which(!i%%2:i)+1==i      #Tests if current factor is prime. If it is -- the first term in this vector will be TRUE. Otherwise, it will be false.
           if (prime) a=a+1 else b=b+1    #If first term is true, add 1 to a. Else add one to b. 
      return(a==b)                        #Test equality of a and b.
}

+=연산자를 사용하여 2 바이트를 절약 할 수 없습니까 ?
R. Kap

안타깝게도 R에는 +=or 와 같은 유용한 증분 연산자가 없습니다 a++. 때로는 더 짧은 방법이있을 수 있지만 (주로 루프 구조의 이점을 얻음), 나는 여기에 하나를 모른다.
user5957401

0

파이썬, 79 바이트

f=lambda n,k=2:n<1or-~f(n-(sum((k%i<1)+2*(k%i**2<1)for i in range(2,k))<3),k+1)

1 기반 인덱싱을 사용합니다. Ideone에서 테스트하십시오 .



0

공리, 102 바이트

f(n:PI):PI==(i:=1;repeat(i:=i+1;a:=divisors(i);2*#[x for x in a|prime?(x)]=#a=>(n=1=>break;n:=n-1));i)

ungolf와 결과

-- 1 base Indexed: return the n_th number i that has 2*#divisorsPrimeOf(i)=#divisors(i)
ff(n:PI):PI==
     i:=1
     repeat
        i:=i+1
        a:=divisors(i)
        2*#[x for x in a|prime?(x)]=#a=>(n=1=>break;n:=n-1)
     i

(3) -> [f(i)  for i in 1..23]
   (3)  [2,3,5,6,7,10,11,13,14,15,17,19,21,22,23,26,29,31,33,34,35,37,38]
                                               Type: List PositiveInteger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.