내가 완벽합니까 (숫자)?


26

이것이 나의 첫 도전입니다!

배경

완전 숫자 는 양의 정수이며, 자체를 제외한 모든 제수의 합과 같습니다.
그래서 6완전 수는 이후이다 1 + 2 + 3 = 6.
다른 한편으로 121 + 2 + 3 + 4 + 6 = 16 != 12.

태스크

당신의 작업은 간단합니다. 프로그램을 작성하십시오 n.

나는 완벽한 숫자가 아니기 때문에 d1 + d2 + ... + dm = s == n
나는 완벽한 숫자입니다.d1 + d2 + ... + dm = s [<>] n


d1, ... dmn제외한 모든 제수는 어디에 있습니까 n?
s모든 제수의 합입니다 d1, ..., dm(다시,없이 n).
[<>]중 하나입니다 <(있는 경우 s < n) 또는 >(경우 s > n).

옵션 n6"1 + 2 + 3 = 6 == 6 때문에 I는 완전한 숫자이다"
를 들어 n존재가 12"I이 완전 수 아니다 1 + 2 + 3 + 4 + 6 = 16> 12 때문에"
위해 n존재 13: "1 = 1 <13이므로 완벽한 숫자가 아닙니다."

규칙

  • n언어의 표준보다 크지 않습니다 int.
  • n표준 입력, 명령 행 인수 또는 파일에서 읽을 수 있습니다 .
  • 출력 메시지는 표준 출력으로 인쇄해야하며 출력에 추가 문자가 표시되지 않습니다 (공백 또는 줄 바꿈이있을 수 있음)
  • 작업 (또는 주요 부분)을 해결하는 내장 함수 나 라이브러리 함수를 사용할 수 없습니다. 아니 GetDivisors()또는 그런 것.
  • 다른 모든 표준 허점이 적용됩니다.

우승자

이것은 이므로 바이트 단위의 가장 짧은 코드가 승리합니다!


@orlp 그것은 도전을 편집하지 않았습니다. 고마워요.
Zereges

7
왜 사용 하는가 ===같은 식? 말이되지 않습니다. d1 + d2 + ... + dm = s = nIMO 여야합니다 .
orlp

예를 들어 입력 6과 12를 사용하여 입력 및 출력에 대한 예를 들어 주시겠습니까?
Zgarb

14
@Zereges 그것은 무의미합니다. 할당 된 것이 없습니다. 비교 만.
orlp

1
@orlp 의도 된 것입니다.
Zereges

답변:


4

Pyth, 81 바이트

jd[+WK-QsJf!%QTStQ"I am"" not""a perfect number, because"j" + "J\=sJ@c3"==<>"._KQ

온라인으로 사용해보십시오 : 데모 또는 테스트 스위트

설명:

                                 implicit: Q = input number
               StQ               the range of numbers [1, 2, ..., Q-1]
          f                      filter for numbers T, which satisfy:
           !%QT                     Q mod T != 0
         J                       save this list of divisors in J
      -QsJ                       difference between Q and sum of J
     K                           save the difference in K

jd[                              put all of the following items in a list
                                 and print them joined by spaces: 
                  "I am"           * "I am"
   +WK                  " not"       + "not" if K != 0
"a perfect number, because"        * "a perfect ..."
j" + "J                            * the divisors J joined by " + "
       \=                          * "="
         sJ                        * sum of J
            c3"==<>"               * split the string "==<>" in 3 pieces:
                                        ["==", "<", ">"]
           @        ._K              and take the (sign of K)th one (modulo 3)
                       Q           * Q

9

자바, 255 (베이스 (17)에 아직도 FF) 270 바이트

class C{public static void main(String[]a){int i=new Integer(a[0]),k=0,l=0;a[0]=" ";for(;++k<i;)if(i%k<1){l+=k;a[0]+=k+" ";}}System.out.print("I am "+(l==i?"":"not ")+"a perfect number, because "+a[0].trim().replace(" "," + ")+" = "+l+(l==i?" == ":l<i?" < ":" > ")+i);}}

그리고 더 읽기 쉬운 버전 :

class C {
    public static void main(String[] a) {
        int i = new Integer(a[0]), k = 0, l = 0;
        a[0] = " ";
        for(; ++k<i ;){
            if (i % k == 0) {
                l += k;
                a[0] += k + " ";
            }
        }
        System.out.print("I am " + (l == i ? "" : "not ") + "a perfect number, because " + a[0].trim().replace(" "," + ") + " = " + l + (l == i ? " == " : l < i ? " < " : " > ") + i);
    }
}

이전에는 홀수에서 작동하지 않았으므로 몇 가지 사항을 조정해야했습니다. 적어도 바이트 수로 다시 운이 좋았습니다. :)


l == 255 이상 작동합니까?
dwana

바이트 수를 망칠 지 알지만 a [0]의 마지막 세 (4 개) 항목을 'String b'로 바꾸고 대신 'b'를 사용하여 문자를 저장할 수 있습니다.
Craig

6

R, 158 163 157 153 143 141 바이트

아직도 골프를 할 여지가 있다고 생각합니다.
편집 : 로 대체 if(b<n)'<'else if(b>n)'>'else'=='되었습니다 c('<'[b<n],'>'[b>n],'=='[b==n]). 는 paste(...)로 대체됩니다 rbind(...)[-1]. 몇 바이트 더 감사합니다 @plannapus.

n=scan();a=2:n-1;b=sum(w<-a[!n%%a]);cat('I am','not'[b!=n],'a perfect number, because',rbind('+',w)[-1],'=',b,c('<'[b<n],'>'[b>n],'==')[1],n)

언 골프

n<-scan()             # get number from stdin
w<-which(!n%%1:(n-1)) # build vector of divisors
b=sum(w)              # sum divisors
cat('I am',           # output to STDOUT with a space separator
    'not'[b!=n],      # include not if b!=n
    'a perfect number, because',
    rbind('+',w)[-1], # create a matrix with the top row as '+', remove the first element of the vector
    '=',
    b,                # the summed value
    c(                # creates a vector that contains only the required symbol and ==
        '<'[b<n],     # include < if b<n
        '>'[b>n],     # include > if b>n
        '=='
    )[1],             # take the first element 
    n                 # the original number
)

시운전

> n=scan();b=sum(w<-which(!n%%1:(n-1)));cat('I am','not'[b!=n],'a perfect number, because',rbind('+',w)[-1],'=',b,c('<'[b<n],'>'[b>n],'==')[1],n)
1: 6
2: 
Read 1 item
I am a perfect number, because 1 + 2 + 3 = 6 == 6
> n=scan();b=sum(w<-which(!n%%1:(n-1)));cat('I am','not'[b!=n],'a perfect number, because',rbind('+',w)[-1],'=',b,c('<'[b<n],'>'[b>n],'==')[1],n)
1: 12
2: 
Read 1 item
I am not a perfect number, because 1 + 2 + 3 + 4 + 6 = 16 > 12
> n=scan();b=sum(w<-which(!n%%1:(n-1)));cat('I am','not'[b!=n],'a perfect number, because',rbind('+',w)[-1],'=',b,c('<'[b<n],'>'[b>n],'==')[1],n)
1: 13
2: 
Read 1 item
I am not a perfect number, because 1 = 1 < 13
> 

+제수 사이에 로그인 해야합니다 .
Zereges

@Zereges 나는 방금 그것을 알아 차리고 곧 고칠 것입니다
MickyT

화려한 rbind트릭을 위해 +1 ! 당신이 할당하는 경우 2 추가 바이트를 저장할 수있는 2:n-1변수에 말 a: which(!n%%1:(n-1)) 이렇게된다 a[!n%%a]. (전체 코드는 다음 n=scan();a=2:n-1;b=sum(w<-a[!n%%a]);cat('I am','not'[b!=n],'a perfect number, because',rbind('+',w)[-1],'=',b,c('<'[b<n],'>'[b>n],'==')[1],n))
plannapus

@ plannapus 고마워, 나는 정말로 그 자신에 만족했다.
MickyT

5

파이썬 2, 183 173 170 바이트

b=input();c=[i for i in range(1,b)if b%i<1];d=sum(c);print'I am %sa perfect number because %s = %d %s %d'%('not '*(d!=b),' + '.join(map(str,c)),d,'=<>='[cmp(b,d)%3::3],b)

예 :

$ python perfect_number.py <<< 6
I am a perfect number because 1 + 2 + 3 = 6 == 6
$ python perfect_number.py <<< 12
I am not a perfect number because 1 + 2 + 3 + 4 + 6 = 16 > 12
$ python perfect_number.py <<< 13
I am not a perfect number because 1 = 1 < 13
$ python perfect_number.py <<< 100
I am not a perfect number because 1 + 2 + 4 + 5 + 10 + 20 + 25 + 50 = 117 > 100
$ python perfect_number.py <<< 8128
I am a perfect number because 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064 = 8128 == 8128

13 바이트를 절약 한 xnor 에게 감사 합니다!


4
'=<>'[cmp(b,d)]-혁명에 동참하십시오!
orlp

감사합니다! 아, 잠깐만 ... :)
Celeo

1
@Celeo 비슷한 솔루션을 생각해 냈습니다. 당신은 쓸 수 있습니다 b%i<1에 대한 b%i==0. 의 경우 ['not ',''][int(d==b)]에는 int파이썬이 자동으로 변환되기 때문에 가 필요하지 않습니다 . 또한 문자열 다중화를 사용할 수 있습니다 "not "*(d!=b).
xnor

@xnor 제안에 감사드립니다!
Celeo

1
@Celeo 다음과 같이 작동하도록 orlp의 제안을 조정할 수 있습니다 "=<>="[cmp(b,d)%3::3].
xnor

4

줄리아 161 157 바이트

n=int(ARGS[1])
d=filter(i->n%i<1,1:n-1)
s=sum(d)
print("I am ",s!=n?"not ":"","a perfect number, because ",join(d," + ")," = $s ",s<n?"<":s>n?">":"=="," $n")

언 골프 드 :

# Read n as the first command line argument
n = int(ARGS[1])

# Get the divisors of n and their sum
d = filter(i -> n % i == 0, 1:n-1)
s = sum(d)

# Print to STDOUT
print("I am ",
      s != n ? "not " : "",
      "a perfect number, because ",
      join(d, " + "),
      " = $s ",
      s < n ? "<" : s > n ? ">" : "==",
      " $n")

4

CJam, 90 바이트

"I am"rd:R{R\%!},:D:+R-g:Cz" not"*" a perfect number, because "D'+*'=+D:++'=C+_'=a&+a+R+S*

비교를 위해 단일 인쇄는 =83 바이트로 수행 할 수 있습니다.

CJam 통역사 에서 온라인으로 사용해보십시오 .

작동 원리

"I am"  e# Push that string.
rd:R    e# Read a Double from STDIN and save it in R.
{       e# Filter; for each I in [0 ... R-1]:
  R\%!  e# Push the logical NOT of (R % I).
},      e# Keep the elements such that R % I == 0.
:D      e# Save the array of divisors in D.
:+R-g   e# Add the divisors, subtract R and compute the sign of the difference.
:Cz     e# Save the sign in C and apply absolute value.
"not "* e# Repeat the string "not " that many times.

" a perfect number, because "

D'+*    e# Join the divisors, separating by plus signs.
'=+D:++ e# Append a '=' and the sum of the divisors.
'=C+    e# Add the sign to '=', pushing '<', '=' or '>'.
_'=a&   e# Intersect a copy with ['='].
+a+     e# Concatenate, wrap in array and concatenate.
        e# This appends "<", "==" or ">".
R+      e# Append the input number.
S*      e# Join, separating by spaces.

2

펄, 148 바이트

$a=<>;$_=join' + ',grep{$a%$_==0}1..$a-1;$s=eval;print"I am ".($s==$a?'':'not ')."a perfect number because $_ = $s ".(('==','>','<')[$s<=>$a])." $a"

줄 바꿈으로 :

$a=<>;
$_=join' + ',grep{$a%$_==0}1..$a-1;
$s=eval;
print"I am ".($s==$a?'':'not ')."a perfect number because $_ = $s ".(('==','>','<')[$s<=>$a])." $a"

나는이 이상 포크 했어 당신은 주위에 바깥 쪽 괄호를 제거하여 10 바이트를 저장할 수 있습니다 'not ''==','>','<'문과에서 전환 .,(때 아무것도 이후에 추가되는 print목록을 보내고). 또한 괄호로는 사용하고있는 처음 과제를 이동하는 몇 가지를 저장하고, 당신이 약간 로직을 변경하는 경우 grep$a%_<1,1..($a=<>)-1그리고 $a!=($s=eval)&&'not '당신은 몇을 면도한다! 모든 것이 이해되기를 바랍니다!
Dom Hastings

2

루아, 244231 바이트

골프 :

n=io.read("*n")d={}s="1"t=1 for i=2,n-1 do if n%i==0 then table.insert(d,i)s=s.." + "..i t=t+i end end print(("I am%s a perfect number, because %s = %s"):format(t==n and""or" not", s, t..(t==n and" == "or(t>n and" > "or" < "))..n))

언 골프 드 :

n=io.read("*n")
divisors={}
sequence="1"
sum=1
for i=2,n-1 do
    if n%i==0 then 
        table.insert(divisors,i)
        sequence=sequence.." + "..i
        sum=sum+i
    end
end

print(("I am%s a perfect number, because %s = %s"):format(sum==n and""or" not", sequence, sum..(sum==n and" == "or(sum>n and" > "or" < "))..n))

2

자바 스크립트 (ES6), 146

템플릿 문자열을 사용하면 Firefox 및 최신 Chrome에서 작동합니다.

for(n=prompt(),o=t=i=1;++i<n;)n%i||(t+=i,o+=' + '+i)
alert(`I am ${t-n?'not ':''}a perfect number because ${o} = ${t} ${t<n?'<':t>n?'>':'=='} `+n)


2

루비 174 160 155 136 134 128 122 바이트

n=6;a=[*1...n].reject{|t|n%t>0};b=a.inject(:+)<=>n;print"I am#{" not"*b.abs} a perfect number, because ",a*?+,"<=>"[b+1],n

6 바이트를 더 절약했습니다. :)

Ruby의 골프 팁 덕분에


인쇄 명령이 여전히 귀찮습니다. 그리고 if 문 삼항을 단축하는 방법을 알아 내야합니까? 내가 제공 할 수없고 건당 하나의 호출 만 수락하는 else 절이 필요합니다
Yuri Kazakov

인쇄 문이 하나만 남습니다 :)
Yuri Kazakov

1

C #, 252 바이트

class A{static void Main(string[]a){int i=int.Parse(a[0]);var j=Enumerable.Range(1,i-1).Where(o=>i%o==0);int k=j.Sum();Console.Write("I am "+(i!=k?"not ":"")+"a perfect number, because "+string.Join(" + ",j)+" = "+k+(k>i?" > ":k<i?" < ":" == ")+i);}}

1

Hassium , 285 바이트

면책 조항 : 명령 행 인수 문제로 인해 최신 버전의 Hassium에서만 작동합니다.

func main(){n=Convert.toNumber(args[0]);s=1;l="1";foreach(x in range(2,n-3)){if(n%x==0){l+=" + "+x;s+=x;}}if(s==n)println("I am a perfect number, because "+l+" = "+s+" == "+s);else {print("I am not a perfect number, because "+l+" = "+s);if(s>n)println(" > "+n);else println(" < "+n);}}

더 읽기 쉬운 버전 :

func main() {
    n = Convert.toNumber(args[0]);
    s = 1;
    l = "1";
    foreach(x in range(2, n - 3)) {
            if (n % x== 0) {
                    l += " + " + x;
                    s += x;
            }
    }
    if (s == n)
            println("I am a perfect number, because " + l + " = " + s + " == " + s);
    else {
            print("I am not a perfect number, because " + l + " = " + s);
            if (s > n)
                    println(" > " + n);
            else
                    println(" < " + n);
    }

}


1
1. Hassium이 내 명령 줄 인수를 읽도록 설득 할 수없는 것 같습니다. 내가 실행 mono src/Hassium/bin/Debug/Hassium.exe t.hs 6하면라고 말합니다 System.ArgumentException: The file 6 does not exist.. 2.이 챌린지가 게시되기 전에 가장 최근의 커밋 인 이 버전 에서는 작동하지 않습니다 . 제출 내용이 경쟁이 아님을 알리는 면책 조항을 답변에 추가하십시오.
Dennis

Windows에서 MVS2015를 사용하여 시도했지만 동일한 오류가 발생했습니다.
Zereges

이것은 문자 그대로 15 분 전에 업데이트 된 문제입니다. Hassium을 복제하고 다시 컴파일하십시오. 똑같은 문제가 발생하여 죄송합니다.
Jacob Misirian

1
최신 버전에서 잘 작동합니다. 이제 면책 조항을 추가 할 수 있다면 다운 피트를 기꺼이 제거하겠습니다. (그런데, 당신은 @Dennis당신의 코멘트 에 추가함으로써 나를 핑할 수있다 . 그렇지 않으면, 나는 당신의 답장을받지 못한다.)
Dennis

@Dennis 나는 그것을 추가 알림 주셔서 감사합니다 :).
야곱 Misirian에게

1

MATLAB, 238

모든 언어 중에서 가장 짧은 언어는 아니지만 MATLAB을 사용한 시도는 다음과 같습니다.

n=input('');x=1:n-1;f=x(~rem(n,x));s=sum(f);a='not ';b=strjoin(strtrim(cellstr(num2str(f')))',' + ');if(s>n) c=' > ';elseif(s<n) c=' < ';else c=' == ';a='';end;disp(['I am ' a 'a perfect number, because ' b ' = ' num2str(s) c num2str(n)])

그리고 이것은 약간 더 읽기 쉬운 형태입니다 :

n=input();      %Read in the number using the input() function
x=1:n-1;        %All integers from 1 to n-1
f=x(~rem(n,x)); %Determine which of those numbers are divisors
s=sum(f);       %Sum all the divisors
a='not ';       %We start by assuming it is not perfect (to save some bytes)
b=strjoin(strtrim(cellstr(num2str(f')))',' + '); %Also convert the list of divisors into a string 
                                                 %where they are all separated by ' + ' signs.
%Next check if the number is >, < or == to the sum of its divisors
if(s>n)  
    c=' > ';    %If greater than, we add a ' > ' to the output string
elseif(s<n) 
    c=' < ';    %If less than, we add a ' < ' to the output string
else
    c=' == ';   %If equal, we add a ' == ' to the output string
    a='';       %If it is equal, then it is a perfect number, so clear the 'not' string
end

%Finally concatenate the output string and display the result
disp(['I am ' a 'a perfect number, because ' b ' = ' num2str(s) c num2str(n)])

함수를 사용하지 않고 2 바이트를 더 절약했습니다. 대신 코드 줄을 실행하고 숫자를 입력으로 요청합니다. 일단 실행되면 끝에 출력이 표시됩니다.


1

펄 6 , 138 바이트

$_=get;
my$c=$_ <=>my$s=[+] my@d=grep $_%%*,^$_;
say "I am {
    'not 'x?$c
  }a perfect number, because {
    join ' + ',@d
  } = $s {
    «> == <»[1+$c]
  } $_"

(개수는 줄 바꿈을 무시하고 필요하지 않기 때문에 들여 쓰기)

@d제수를 보유하는 배열입니다.
$s제수의 합을 보유합니다.
$c입력과 제수의 합을 비교 한 값입니다.
(효과 $c중 하나입니다 -1, 0, 1,하지만 정말 중 하나입니다 Order::Less, Order::Same또는 Order::More)

이어 'not 'x?$c, ?$c이 경우 유효하게와 동일 abs $c하고,x 캐릭터 반복 연산자이다.

«> == <»의 약자입니다 ( '>', '==', '<' ).
이후 $c하나의-1,0,1 , 우리는 목록에 인덱스를 사용할 수 있도록 하나 그것을 이동해야합니다.

기술적으로 이것은 2⁶⁴ 이상의 숫자에서는 작동하지만 2¹⁶ 이상의 숫자에서는 시간이 많이 걸립니다.


0

Pyth, 84 바이트

jd+,+"I am"*.aK._-QsJf!%QTtUQ" not""a perfect number, because"+.iJm\+tJ[\=sJ@"=<>"KQ

잘못된 대답, 내가 구현하는 것을 거부하기 때문에 ===같은 식이다.


2
"같은 방정식에서 구현 = 및 =="을 거부하면 +1
theonlygusti

0

루비, 164 바이트

->i{t=(1...i).select{|j|i%j==0};s=t.inject &:+;r=['==','>','<'][s<=>i];puts "I am #{'not ' if r!='=='}a perfect number, because #{t.join(' + ')} = #{s} #{r} #{i}"}

테스트

irb(main):185:0> ->i{t=(1...i).select{|j|i%j==0};s=t.inject &:+;r=['==','>','<'][s<=>i];puts "I am #{'not ' if r!='=='}a perfect number, because #{t.join(' + ')} = #{s} #{r} #{i}"}.call 6
I am a perfect number, because 1 + 2 + 3 = 6 == 6

irb(main):186:0> ->i{t=(1...i).select{|j|i%j==0};s=t.inject &:+;r=['==','>','<'][s<=>i];puts "I am #{'not ' if r!='=='}a perfect number, because #{t.join(' + ')} = #{s} #{r} #{i}"}.call 12
I am not a perfect number, because 1 + 2 + 3 + 4 + 6 = 16 > 12

irb(main):187:0> ->i{t=(1...i).select{|j|i%j==0};s=t.inject &:+;r=['==','>','<'][s<=>i];puts "I am #{'not ' if r!='=='}a perfect number, because #{t.join(' + ')} = #{s} #{r} #{i}"}.call 13
I am not a perfect number, because 1 = 1 < 13

0

이맥스 리스프, 302 바이트

(defun p(n)(let((l(remove-if-not'(lambda(x)(=(% n x)0))(number-sequence 1(- n 1)))))(setf s(apply'+ l))(format"I am%s a perfect number, because %s%s = %s %s %s"(if(= s n)""" not")(car l)(apply#'concat(mapcar'(lambda(x)(concat" + "(number-to-string x)))(cdr l)))s(if(= sum n)"=="(if(> sum n)">""<"))n)))

언 골프 버전 :

(defun perfect (n)
  (let ((l (remove-if-not '(lambda (x) (= (% n x) 0))
              (number-sequence 1 (- n 1)))))
    (setf sum (apply '+ l))
    (format "I am%s a perfect number, because %s%s = %s %s %s" (if (= sum n)"" " not") (car l)
        (apply #'concat (mapcar '(lambda (x) (concat " + " (number-to-string x))) (cdr l)))
        sum (if(= sum n)
            "=="
          (if(> sum n)
              ">"
            "<"))
        n)))

0

파워 쉘, 164 바이트

$a=$args[0]
$b=(1..($a-1)|?{!($a%$_)})-join" + "
$c=iex $b
$d=$a.compareto($c)
"I am $("not "*!!$d)a perfect number, because $b = $c $(("==","<",">")[$d]) $a"

몇 가지 일반적인 PoSh 트릭은 아닙니다.

  • 합계를 만든 다음 iex로 평가하십시오.
  • gt, lt, eq 배열의 인덱스 비교
  • !! $ d는 $ d = 1 또는 -1의 경우 true == 1, $ d = 0의 경우 false == 0으로 평가됩니다.

0

awk, 150

n=$0{for(p=i=s=n>1;++i<n;)for(;n%i<1;p+=i++)s=s" + "i;printf"I am%s a perfect number, because "s" = "p" %s "n RS,(k=p==n)?_:" not",k?"==":p<n?"<":">"}

이 입력에 맞도록 바이트를 낭비했습니다 1. 그것이 예상되는지 확실하지 않습니다.

n=$0{
    for(p=i=s=n>1;++i<n;)
        for(;n%i<1;p+=i++)s=s" + "i;
    printf "I am%s a perfect number, because "s" = "p" %s "n RS,
           (k=p==n)?_:" not",k?"==":p<n?"<":">"
}

0

05AB1E , 58 바이트

„I€ÜIѨ©OIÊi'€–}“€…íÀ‚³,ƒ«“®vy'+}\'=®ODI.S"==><"211S£sèIðý

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

Iۆ              # Push dictionary string "I am"
IѨ               # Push the divisors of the input-integer, with itself removed
   ©              # Store it in the register (without popping)
    O             # Get the sum of these divisors
     IÊi   }      # If it's not equal to the input-integer:
        '€–      '#  Push dictionary string "not"
“€…íÀ‚³,ƒ«“       # Push dictionary string "a perfect number, because"
®v   }            # Loop `y` over the divisors:
  y'+            '#  Push the divisor `y`, and the string "+" to the stack
      \           # Discard the final "+"
       '=        '# And push the string "="
®O                # Get the sum of the divisors again
  D               # Duplicate it
I.S               # Compare it to the input-integer (-1 if smaller; 0 if equal; 1 if larger)
   "==><"         # Push string "==><"
         211S£    # Split into parts of size [2,1,1]: ["==",">","<"]
              sè  # Index into it (where the -1 will wrap around to the last item)
I                 # Push the input-integer again
ðý                # Join everything on the stack by spaces
                  # (and output the result implicitly)

내이 05AB1E 팁을 참조하십시오 (섹션 어떻게 사전을 사용하는 방법을? ) 이유를 이해하는 „I€Ü것입니다 "I am", '€–이다 "not", 그리고 “€…íÀ‚³,ƒ«“이다 "a perfect number, because".

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