정의 : 소수 는 자연수이며 p n 형식으로 표현할 수있는 자연수입니다. 여기서 p는 소수이고 n은 자연수입니다.
작업 : 프라임 전력 p n > 1이 주어지면 프라임 p를 반환합니다.
테스트 케이스 :
input output
9 3
16 2
343 7
2687 2687
59049 3
채점 : 이것은 code-golf 입니다. 바이트 단위의 최단 답변이 이깁니다.
n = 1
.
정의 : 소수 는 자연수이며 p n 형식으로 표현할 수있는 자연수입니다. 여기서 p는 소수이고 n은 자연수입니다.
작업 : 프라임 전력 p n > 1이 주어지면 프라임 p를 반환합니다.
테스트 케이스 :
input output
9 3
16 2
343 7
2687 2687
59049 3
채점 : 이것은 code-golf 입니다. 바이트 단위의 최단 답변이 이깁니다.
n = 1
.
답변:
T.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:Listen tothy!Page:You cat!Scene V:.Page:You be the sum ofyou a cat!Be the product ofthe quotient betweenI you you worse I?If soLet usScene V.Open heart
(I/you)*you<I
I%you>0
SPL 보다 짧습니다 .
n->{int r=1;for(;n%++r>0;);return r;}
@Tsathoggua 덕분에 간접적으로 -7 바이트 . JoKing
덕분에 -2 바이트
설명:
n->{ // Method with integer as both parameter and return-type
int r=1; // Start the result-integer `r` at 1
for(;n%++r>0;); // Increase `r` by 1 before every iteration with `++r`
// and loop until `n` is divisible by `r`
return r;} // After the loop, return `r` as result
n->{for(int i=1;++i<=n;)if(n%i<1)return i;}
(43 개) 문자를 얻으려면? (저는 Java를 못해요.)
n->{for(int i=1;++i<=n;)if(n%i<1)return i;return n;}
작동하지만 불행히도 더 깁니다. Java는 무한 루프에서 단일 리턴을 가질 수 있으므로 실제로 바이트를 절약 할 수 있습니다. 감사합니다! n->{for(int i=1;;)if(n%++i<1)return i;}
. 이후 i
이 될 것이다 n
(테스트 케이스와 마찬가지로 결국 2687
)과 n%n==0
의는 i<=n
이 경우에 필요하지 않습니다.
if/else
로 and/or
. 처럼 f=lambda n,x=2:n%x and f(n,x+1)or x
.
[S S T T N
_Push_-1][S S S N
_Push_0][T N
T T _Read_STDIN_as_number][N
S S N
_Create_Label_LOOP][S S S T N
_Push_1][T S S T _Subtract][S N
S _Duplicate][S S S N
_Push_0][T T T _Retrieve][S N
T _Swap][T S T T _Modulo][N
T T N
_If_0_Jump_to_Label_LOOP][S S T T N
_Push_-1][T S S N
_Multiply][T N
S T _Print_as_number]
@JoKing 덕분에 -20 바이트 .
문자 S
(공백), T
(탭) 및 N
(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]
설명으로 만 추가되었습니다.
온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).
의사 코드의 설명 :
Integer n = STDIN as integer
Integer i = -1
Start LOOP:
i = i - 1
if(n modulo-i is negative)
Go to next iteration of LOOP
else
i = i * -1
Print i
Exit with error: No exit defined
예제 실행 : input = 9
Command Explanation Stack Heap STDIN STDOUT STDERR
SSTTN Push -1 [-1]
SSSN Push 0 [-1,0]
TNTT Read STDIN as integer [-1] {0:9} 9
NSSN Create Label_LOOP [-1] {0:9}
SSSTN Push 1 [-1,1] {0:9}
TSST Subtract top two (-1-1) [-2] {0:9}
SNS Duplicate top (-2) [-2,-2] {0:9}
SSSN Push 0 [-2,-2,0] {0:9}
TTT Retrieve [-2,-2,9] {0:9}
SNT Swap top two [-2,9,-2] {0:9}
TSTT Modulo top two (9%-2) [-2,-1] {0:9}
NTSN If neg.: Jump to Label_LOOP [-2] {0:9}
SSTTN Push -1 [-2,-1] {0:9}
TSST Subtract top two (-2-1) [-3] {0:9}
SNS Duplicate top (-2) [-3,-3] {0:9}
SSSN Push 0 [-3,-3,0] {0:9}
TTT Retrieve [-3,-3,9] {0:9}
SNT Swap top two [-3,9,-3] {0:9}
TSTT Modulo top two (9%-3) [-3,0] {0:9}
NTSN If neg.: Jump to Label_LOOP [-3] {0:9}
SSTTN Push -1 [-3,-1] {0:9}
TSSN Multiply top two (-3*-1) [3] {0:9}
TNST Print as integer [] {0:9} 3
error
프로그램이 오류와 함께 중지됩니다 : 종료를 찾을 수 없습니다.
i == n
수표 가 필요하십니까 ? n%n
어쨌든 0 일 것입니다
n%i
인쇄하고 나중에 프린트를 호출 할 수 있습니까?
@(x)factor(x)(1)
@(x) % Anonymous function taking x as input
factor(x) % Prime factorization
(1) % Get the first element
또는:
@(x)max(factor(x)) % the makeup of makeup artists
0==
1>
내가 생각할 수 있습니다 .
: f 1 begin 1+ 2dup mod 0= until ;
: f \ Define a new word
1 \ place a 1 on the stack (to use as a counter/index)
begin \ start indefinite loop
1+ 2dup \ increment counter and duplicate counter and prime power
mod \ calculate power % index
0= until \ end the loop if modulus is 0 (no remainder)
; \ end word definition
param($a)(2..$a|?{!($a%$_)})[0]
의 범위를 구축 2
입력 $a
, 이들 요소 꺼내서 where
( ?
) 모듈로 연산 %
제로는 결과 !(...)
(즉,의 약수 된 것 $a
)을, 그리고 최소 필요 [0]
한쪽. 그것은 파이프 라인에 남아 있으며 출력은 암시 적입니다.
{grep($_%%*,2..$_)[0]}
입력 범위에서 2까지의 계수를 필터링하고 첫 번째 요소를 반환하는 익명 코드 블록입니다. ^$
2 바이트를 절약하기 위해 사용하려고 시도했지만 입력이 소수 인 경우에는 작동하지 않았습니다.
@Jo King 덕분에 -52 바이트
Function A(n)
For i=n To 2 Step-1
A=If(n Mod i=0,i,A)
Next
End Function
언 골프 드 :
Function A(input As Long) As Long
For i = input To 2 Step -1
A = If (input Mod i = 0, i, A)
Next
End Function
설명:
i
루프 검색의 첫 번째 숫자로부터 뒤로, 그리고 균등하게 분할 모든 번호를 찾는다. 우리가 뒤로 가고 있기 때문에 가장 작은 것이 Vairable에 저장됩니다 A
.
VB는 함수 이름과 일치하는 무료 변수를 제공합니다 (제 경우에는 A
). 함수 실행이 끝나면 해당 변수의 값이 리턴됩니다 (명시 적 Return
명령문 제외) .
Java에서 Kevin Cruijssen의 답변에서 영감을 얻었습니다 .
Jo King 덕분에 2 3 바이트가 제거되었습니다 .
lambda n:[i+1for i in range(n)if n%-~i<1][1]
if
있으며 조건이 될 수 있습니다.<1
require"prime"
i=gets.to_i
Prime.each(i){|p|(1..i).each{|n|c=p**n==i
puts p if c
exit if c}}
n
1이 될 수 있습니까 ?