꽤 부드러운 움직임


18

산술에서, n- 매끄러운 숫자 (여기서 n은 주어진 소수 임)는 수학적으로 n보다 큰 소수가없는 양의 정수로 정의됩니다. 예를 들어 42는 7의 모든 주요 요소가 7보다 작거나 같기 때문에 7 평활이지만 44는 7의 평활 요소가 아니기 때문에 7 평활이 아닙니다.

자신의 제곱근보다 큰 소수갖지 않는 숫자로 꽤 부드러운 숫자를 정의하십시오 . 따라서 매우 부드러운 숫자 목록은 다음과 같이 공식화 될 수 있습니다.

  • (편집 됨!) 1 꽤 부드러운 수 인한 주요 요인의 완전한 부족이다. (이 질문의 원래 버전에서는 1이 목록에서 잘못 제외되었으므로 출력에서 ​​제외하면 잘못 표시되지 않습니다.)
  • 4 (= 2 2 )와 8 사이 에서 꽤 부드러운 숫자는 2가 매끄 럽습니다. 이는 2를 유일한 주요 요인으로합니다.
  • 9 (= 3 2 )에서 24 사이 의 매우 부드러운 숫자는 3이 매끄럽고 소인수 분해에서 2와 3을 가질 수 있습니다.
  • 25 (= 5 2 )에서 48 사이 의 매우 부드러운 숫자는 5가 매끄럽고 소인수 분해에서 2, 3, 5를 가질 수 있습니다.
  • 그리고 다음 소수의 제곱에 도달 할 때마다 기준을 업그레이드합니다.

매우 부드러운 숫자 목록은 고정되어 있으며 다음과 같이 시작합니다 : 1, 4, 8, 9, 12, 16, 18, 24, 25, ...

당신의 도전은 10,000 (= 100 2 )을 포함하여 매우 부드러운 숫자를 모두 출력하는 코드를 작성하는 것 입니다. 목록의 각 숫자와 다음 숫자 사이에는 적어도 하나의 구분 기호 (공백, 쉼표, 줄 바꿈 등)가 없어야하지만 사용되는 문자와는 전혀 관련이 없습니다.

평소와 같이, 가장 낮은 바이트 수가 승리합니다. 분명히 목록을 출력하는 것이 여기에 너무 유익하지 않을 것입니다. 행운을 빕니다!


9
1이 왜 부드럽 지 않습니까?
Dennis

리스트를 역순으로 출력 할 수 있습니까?
Leaky Nun

5
OEIS A048098 (추가 포함 1)
Leaky Nun

1
@Mego "4보다 작은 숫자는 없습니다." 꽤 분명합니다. 반드시 분명하지는 않지만 분명합니다.
viraptor

1
@viraptor 1이 부드럽 지 않다고 진술 된 것이 아니라 정의와 배제 진술이 서로 모순되기 때문에 명확하지 않은 것으로 투표되었습니다.
Leaky Nun

답변:


1

실제로 11 바이트

4╤R`;yM²≤`░

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

1을 포함하지 않습니다.

설명:

4╤R`;yM²≤`░
4╤R          range(10**4)
   `;yM²≤`░  filter: take values where
    ;yM²       the square of the largest prime factor
        ≤      is less than or equal to the value

7

젤리 , 12 바이트

Æf>½S
³²ḊÇÐḟ

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

작동 원리

³²ḊÇÐḟ  Main link. No arguments.

³       Yield 100.
 ²      Square it to yield 10,000.
  Ḋ     Dequeue; yield [2, ..., 10,000].
   ÇÐḟ  Filter-false; keep elements for which the helper link returns 0.

Æf>½S   Helper link. Argument: n

Æf      Compute the prime factorization of n.
  >½    Compare the prime factors with the square root of n.
    S   Sum; add the resulting Booleans.

7

Brachylog , 21 19 바이트

Fatalize 덕분에 1 바이트를 더 사용하여 1 바이트를 더 영감을 얻었습니다.

100^:4reP$ph^<=P@w\

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

여기에 약 6 초가 걸립니다.

100^:4reP$ph^<=P@w\
100                      100
   ^                     squared
    :4                   [10000,4]
      r                  [4,10000]
       eP                P is an integer in that interval (choice point),
        P$ph^<=P         P, prime factorized (from biggest to smallest),
                         take the first element, squared, is less than
                         or equal to P
               P@w       Write P with a newline,
                  \      Backtrack to the last choice point and make
                         a different choice until there is no more
                         choice and the program halts.

이전 21 바이트 솔루션

100^:4reP'($pe^>P)@w\

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

여기에 약 6 초가 걸립니다.

100^:4reP'($pe^>P)@w\
100                      100
   ^                     squared
    :4                   [10000,4]
      r                  [4,10000]
       eP                P is an integer in that interval (choice point),
        P'(      )       The following about P cannot be proved:
           $pe               one of its prime factor
              ^              squared
               >P            is greater than P
                  @w     Write P with a newline,
                    \    Backtrack to the last choice point and make
                         a different choice until there is no more
                         choice and the program halts.

100^:4reP$pot^<=P@w\덜 우아하지만 1 바이트 더 짧습니다.
치명적

@Fatalize 고마워, 나는 다른 바이트를 골라 내었다
Leaky Nun

4

하스켈, 53 바이트

r=[1..10^4]
[n|n<-r,product[x|x<-r,x*x<=n]^n`mod`n<1]

지금 골프를 칠 시간이 없지만 n꽤 매끄러운 지 테스트하는 방법을 설명하고 싶습니다 .에서 1~ 까지의 수를 곱하고 sqrt(n)(즉 계승 계산) 제품을 고출력으로 올린 다음 결과를 확인하십시오. 의 배수입니다 n.

출력하지 않아야 할 r=[2..10^4]경우로 변경하십시오 1.


골퍼는 아니지만 큐브가 충분하다고 확신합니다 8.
Neil

2

Pyth , 16 15 바이트

Jakube 덕분에 1 바이트.

tf!f>*YYTPTS^T4

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

tf!f>*YYTPTS^T4
             T   10
            ^T4  10000
           S^T4  [1,2,3,...,10000]
 f               filter for elements as T for
                 which the following is truthy: 
         PT          prime factorization of T
   f                 filter for factor as Y:
     *YY                 Y*Y
    >   T                greater than T ?
  !                  logical negation
t                remove the first one (1)

확실히 Pyth에는 사각형 기능이 있습니까? *dd 그 기능으로 대체 할 수 있습니까?
코너 오브라이언

@ ConorO'Brien Nope, Pyth에는 사각형 함수가 없습니다.
Leaky Nun

그것은 일종의 감독처럼 보입니다
Conor O'Brien


2

Matlab, 58 57 56 52 48 바이트

for k=1:1e4
if factor(k).^2<=k
disp‌​(k)
end
end

각 숫자에 대해 제곱 한 모든 요인이 숫자 자체보다 크지 않은지 확인합니다. 그렇다면 해당 번호를 표시합니다.

이 접근법을 골프 로 한 @Luis Mendo 에게 감사합니다


다른 접근 방식 (50 바이트) :

n=1:10^4;for k=n
z(k)=max(factor(k))^2>k;end
n(~z)

각 숫자에 대해 최대 소인수 제곱이 숫자 자체보다 작은 지 계산합니다. 그런 다음 인덱싱에 사용합니다.


1
이전의 접근 방식은 더 짧아 질 수 있습니다.for k=4:1e4,if factor(k).^2<=k,disp(k);end;end
Luis Mendo

1

SQF , 252 (227) 220

표준 스크립트 형식 :

#define Q(A,B) for #A from 2 to B do{
Q(i,10000)if([i]call{params["j"];u=sqrt j;a=true;Q(k,u)a=a and((j%k!=0)or(j/k<u)or!([j/k]call{params["x"];q=true;Q(z,sqrt x)q=q and(x%z!=0)};q}))};a})then{systemChat format["%1",i]}}

다음을 호출 할 때 컴파일 체인에 전처리기를 포함하십시오.

  • execVM "FILENAME.sqf"
  • call compile preprocessFile "FILENAME.sqf"

SQF가 stdout해야하는 가장 가까운 시스템 채팅 로그에 기록합니다.



1

파이크, 13 12 11 바이트

T4^S#DP#X<!

여기 사용해보십시오!

(10 ^ 4가 시간 초과되므로 링크는 10 ^ 3까지만 올라갑니다)

T4^S        -  one_range(10^4)
    #DP#X<! - filter_true(V, ^): (as i)
      P     -   factors(i)
       #X<! -  filter_true(V, ^):
        X   -   ^ ** 2
         <! -    not (i < ^)



0

R, 97 바이트

b=F;for(j in 1:1e4){for(i in which(!j%%1:j)[-1])if(which(!i%%1:i)[2]==i)b=i<=j^0.5;if(b)print(j)}

언 골프

b <- F                               #Initializes
for (j in 1:1e4){                    #Loop across integers 1..10^4
    a <- which(!j%%1:j)[-1]          #Finds all factors
    for (i in a)                     #Loop across factors
         b <- which(!i%%1:i)[2]==i   #Tests primeness
         if(b) c <- i<=j^0.5         #If prime, tests smoothness
    if(c) print(j)                   #If biggest prime factor gives smooth
}                                    #result, Prints the number.

0

Pyth, 12 바이트

g#^ePT2tS^T4

1을 포함하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.