이 페이지는 코딩도장 데이터의 읽기 전용 정적 보관본입니다.

완전수 구하기

자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다. 예를 들면, 6과 28은 완전수이다. 6=1+2+3 // 1,2,3은 각각 6의 약수 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수

입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.

2016/12/20 17:04

박 시우

479개의 풀이가 있습니다.

파이썬 3로 짧게 구현해봤습니다.

num= int(input("숫자를 입력하시오 : "))
print([x for x in range(1, num+1) if x==sum(y for y in range(1, x) if x%y==0)])

2016/12/21 01:10

박 시우

+2 이거 실행하면 TypeError: 'int' object is not callable 라고 뜨는데 왜그럴까요? - Woo MinHwa, 2017/03/16 17:28
+1 요 부분 해석이 어렵네요 ㅠㅠ => print([x for x in range(1, num+1) if x==sum(y for y in range(1, x) if x%y==0)]) 해당 부분을 한줄로 표현하지 말고, 늘여서 표현은 어떻게 하나요? - Jung Daehyun, 2017/07/31 01:33
이렇게 간단하게 표현해 내는 분들 보면 감탄과 자괴감이 동시에 드네요.. - 715, 2018/01/19 14:06

파이썬 3.5입니다.

# perfect number

N = int(input("Input a natural number: ")) # 숫자를 하나 입력합니다. 

result = [] # 완전수를 저장할 리스트.

for i in range(1, N+1): # 1부터 입력한 숫자까지
    sum = 0
    for j in range(1, i): # 1부터 i까지
        if i%j==0:  
            sum += j # 약수들의 합을 구합니다.

    if i == sum: # 자신을 제외한 약수들의 합이 자신과 같으면, 즉 완전수면.. 
        result.append(i)

print(result)

결과

10000을 입력하면 [6, 28, 496, 8128] 이 출력됩니다.

2017/04/09 19:03

simkyohoon

단순히 N이하의 완전수를 구하기 위해 계산하면 N x N번의 계산을 수행해야 하기 때문에 계산량이 기하급수적으로 늘어납니다. 약수 알고리즘에 대해 조금더 알아보면 최적화를 할수 있는 부분이 있어 이를 토대로 구현해봤습니다.

  1. 하나의 약수를 알면 나머지 다른 약수도 자동으로 알수있다. 예를들어 2는 6의 약수이며 6 / 2는 3이므로 3은 6의 약수임을 알수있다.
  2. 1번의 사실에 근거하면 N의 약수를 구하기 위해 floor(sqrt(N))번의 검사만 수행하면 된다.
from math import *

def isPerfectNumber(n):
    divisors = [1, ]
    for i in range(2, floor(sqrt(n)) + 1):
        if n % i == 0:
            divisors.append(i)
            divisors.append(int(n / i))
    return sum(divisors) == n

def main():
    perfectNumbers = []
    N = int(input("Input Number : "))    
    for i in range(1, N+1):
        if isPerfectNumber(i):
            perfectNumbers.append(i)
    if perfectNumbers:
        print("PerfectNumber :", perfectNumbers)

if __name__ == '__main__':
    main()

실행결과

Input Number : 3000
PerfectNumber : [1, 6, 28, 496]

2016/12/30 03:27

윤태호

오 그렇네요. 저도 제곱근을 사용한 방법으로 수정해보겠습니다. - 박 시우, 2016/12/30 04:33
제곱근을 쓰면 계산수가 확 줄겠군요 효율적이네요. - soleaf, 2017/04/11 10:54
한수 배우고 갑니다.. 이거 보고 비슷하게 짜봤는데 제곱근으로 계산수 줄이는건 생각 못했네요... - guma go, 2020/12/15 18:21
초급자라 코드 이해하는데 한참 걸렸네요. 공부 많이 되었습니다. 감사합니다. 그런데 문제에 자기 자신을 제외라고 되어있어서 1을 제외시키는게 맞는 것 같아요. main 함수에서 "for i in range(1, N+1):"을 "for i in range(2, N+1):"로 고쳐도 문제가 없을까요? - ㅎㅎ, 2022/01/13 10:11
# pnumber.py

n = int(input("자연수 입력 > "))
result = 0

for i in range(1,n+1):

    for j in range(1,i):
        if i%j==0:
            result += j
    if result == i:
        print("%d "%(result),end=' ')
    result = 0

2016/12/21 21:56

최 영훈

#-*- coding: utf-8 -*-

#1 부터 n 까지
#n 값이 커질수록 좀 오래걸립니다..


#풀이방법 1  평범함
n =1000
result =  [ c for c in xrange(1, n) if sum(x for x in xrange(1,c) if not c%x) == c]



#풀이방법 2 필터와 람다를 써보자(뭔가 아름다워보임!! 지림)
n =1000
#하하핫 죄송하지만 1번보다 이게 더 빠르다구욧!
beyond_if = list(filter(lambda c: sum(x for x in xrange(1,c) if not c%x) == c,range(1,n)))



#풀이방법 3  윗 방법들의 뼈대입니다 . 풀이방법 3을 코드리뷰해서 풀이방법 1,2를 만들었습니다 :P
n =1000
for c in xrange(1, n):
    if sum(x for x in xrange(1,c) if not c%x) == c:
       print c

2016/12/28 18:07

Daniel

import java.util.*;

public class Test1 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("수 입력 : ");
        int n = sc.nextInt();

        for(int i=1; i<=n; i++) {
            int sum = 0;
            for(int j=1; j<i; j++) {
                if(i%j==0) {
                    sum += j;
                }
            }
            if(i==sum) {
                System.out.println(i);
            }
        }

    }

}

2017/06/12 16:41

허수진

num = int(input('type number : '))
print([x for x in range(1, num+1) if x == sum(y for y in range(1, x) if x % y == 0)])

2019/11/14 14:42

재리

#include <stdio.h>
#include <math.h>

int perfect_num(int n) {
    int i, sum = 1;
    for (i = 2; i <= (int)sqrt(n); i++) {
        if ((n%i == 0) && (n/i != i)) sum += (i+n/i);
        else if ((n%i == 0) && (n/i == i)) sum += i;
        else continue;
    }
    if (sum == n) return 1;
    else return 0;
}

int main()
{
    int i, n;
    scanf("%d", &n);
    for (i = 2; i <= n; i++) { if (perfect_num(i) == 1) printf("%d\n", i); }
    return 0;
}

2016/12/21 22:13

리코둔

c언어로 했습니다

#include<stdio.h>

int main(void)
{
 int a,i,j,sum;

 printf("정수를 입력하세요.\n");
 scanf("%d",&a);
 for(i=1;i<=a;i++)
 {
      sum=0;
     for(j=1;j<i;j++)
       if((i%j)==0)
           sum+=j;
      if(i==sum)
           printf("완전수는 %d\n",i);
     }
     return 0;

}

2016/12/21 23:43

oh

import java.util.Scanner;

public class test05 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.print("자연수를 입력하세요 : ");

        int num = sc.nextInt();

        for(int i=1; i<=num; i++){
            if(isPerfectNum(i)){
                System.out.println(i);
            }
        }
    }



    //완전수인지 확인하기 위한 함수
    public static boolean isPerfectNum(int su){
        int sum=0;
        for(int i=1; i<=su; i++){
            if(su%i == 0 && su!=i){
                sum += i;
            }
        }
        if(sum == su){
            return true;
        }else{
            return false;
        }
    }
}

2016/12/31 18:57

Min Daehong

# 한글 처리 in Atom 1.21.1 + Anaconda(Python 3.6.3)
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

# 자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
# 예를 들면, 6과 28은 완전수이다.
# 6=1+2+3 // 1,2,3은 각각 6의 약수
# 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
# 입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.

# 6 는 완전수 :  6 = 1+2+3
# 28 는 완전수 :  28 = 1+2+4+7+14
# 496 는 완전수 :  496 = 1+2+4+8+16+31+62+124+248
# 8128 는 완전수 :  8128 = 1+2+4+8+16+32+64+127+254+508+1016+2032+4064

n = int(input("n을 입력하세요 : "))

for i in range(2, n + 1):
    temp = '+'.join([str(j) for j in range(1, i) if not(i % j)])
    if eval(temp) == i:
        print(i, "는 완전수 : ", i, "=", temp)

2017/11/02 01:08

Jace Alan

n=int(input("숫자를 입력하세요 : " ))
a = [ i for i in range(1,n+1)  if i == sum([j for j in range(1,i) if i%j ==0 ] ) ]
a

보기 좋게 풀어쓰면 아래와 같습니다.

[ i for i in range(1,n+1)  if i == sum([j for j in range(1,i) if i%j ==0 ] ) ]

n=int(input("숫자를 입력하세요 : " ))
for i in range(1,n):
    a=[]
    for j in range(1,i):
        if i%j == 0 :
            a.append(j)
    #print(i,a, sum(a))
    if i == sum(a):
        print(i)

2022/08/05 22:57

김보라

//자연수 받아서 그이하의 완전수 출력
public class NaturalNumber {

    static ArrayList<Integer> pNo = new ArrayList<Integer>();
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        System.out.println("숫자를 입력하세요");
        int mynumber = sc.nextInt();

        //1000 이하의 자연수 입력
        for(int naturalNumber=1;naturalNumber<mynumber;naturalNumber++)
        cc(naturalNumber);

        //완전수 출력
        System.out.print("완전수: ");
        for (int s = 0; s < pNo.size(); s++) {
            System.out.print(pNo.get(s) + " ");
        }
    }
    // 약수 구하기
    public static void cc(int naturalNumber) {
        ArrayList<Integer> cc = new ArrayList<Integer>();
        int i = 0;
        while (naturalNumber != i) {
            i++;
            if (naturalNumber % i == 0) {
                cc.add(i);
            }
        }
        check(naturalNumber, cc);
    }
    // 완전수 확인
    public static void check(int naturalNumber, ArrayList<Integer> cc) {
        int sum = 0;
        for (int i = 0; i < cc.size(); i++) {
            sum += cc.get(i);
        }
        if ((sum - naturalNumber) == naturalNumber) {
            pNo.add((sum - naturalNumber));
        }
    }
}

자바 배운지 얼마 안되서 이걸로 해봤는데 5번째 완전수 부턴 이방식으로는 콘솔에선 안나오더라구요!

2016/12/22 16:12

손 재형

비주얼 스튜디오에서 c언어로 짜봤습니다

#include <stdio.h>


int main() {
    int N, i, j;
    int a = 0;
    printf("완전수를 구하는 프로그램...\n\n");
    getchar();

    printf("자연수 N 을 입력하세요.");
    scanf_s("%d", &N);
    printf("N 이하의 완전수는 \n");
    for (i = 1; i <= N; i++) {
        for (j = 1; j < i; j++) {
            if (i%j == 0)a += j;
        }
        if (a == i)printf("%d\t", i);
        a = 0;
    }
    puts("\n");
    return 0;
}

2016/12/24 21:35

최 윤준

public class Lv1_01 {
    public static void main(String[] args) {
        PerfectNumber p = new PerfectNumber(500000);
        p.result();
    }

}

class PerfectNumber {
    private int n;

     public PerfectNumber(int n){
         this.n = n;
     }

    void play(int num) {
        int result = num;       // 비교를 위해 원본을 저장
        ArrayList<Integer> arr = new ArrayList<Integer>();  // 배열을 생성 
        int sum = 1;    // 약수의 합을 구할 변수  1은 모든 수의 공통약수이기 때문에 디폴트로 지정
        int end = num;  // for문의 중복을 막기위해 종료 위치를 변경해주는 변수
        for (int i = 2; i < end; i++) {
            // num을 2부터 나눠보는데 나머지가 0이면 나누어 떨어지기 때문에 약수가 된다  
            if (num%i==0) {
                arr.add(i);
                arr.add(num/i);
                end = num/i;
            }

        }
        //배열의 합
        for (int i = 0; i < arr.size(); i++) {
            sum+=arr.get(i);
        }

        //배열의 합이 처음 입력받은 수와 같은지 비교
        if (sum==result) {
            System.out.println(sum);
        }

    }

    void result() {
        //입력받은 수부터 2까지 계속 돌려본다
        for (int i = n; i >= 2; i--) {
            play(i);
        }

    }
}

2016/12/26 17:31

bbubbush

파이썬3입니다. 박시우님 답을 보니 제가 너무 복잡하게 풀었네요~ㅠㅠ

num = int(input('자연수를 입력하시오: '))
print([sum(i[0:-1]) for i in [[ z for z in range(1, y+1) if y % z ==0 ] for y in [ x for x in range(1,num+1) ]] if sum(i[0:-1]) == i[-1]])

2016/12/26 23:05

조종섭

c++ 로 작성

#include<iostream>
using namespace std;

void main()
{
    int a, sum;
    cout << "정수를 입력하세요" << endl;
    cin >> a;
    for (int j = 1; j <= a; j++)
    {
        sum = 0;
        for (int i = 1; i < j; i++)
        {
            if ((j%i) == 0) {
                sum += i;
            }
        }

        if (j == sum)
            cout << "완전수는 " << j << endl;
    }
}

2016/12/27 16:08

분당의아들

a = int(input('자연수를 입력하세요: '))

result = []
for i in range(a):
    if(a % (i+1) == 0):
        if(i+1 != a):
            result.append(i+1)

print(result)

2016/12/27 18:06

Soul2BIN

Ruby

perfect = ->n { (1...n).select {|f| n%f == 0 }.sum == n}
find_pnum = -> { puts (1..gets.to_i).select(&perfect) }

Test

$stdin = StringIO.new("28\n")
expect{ find_pnum.call }.to output("6\n28\n").to_stdout

2016/12/29 13:42

rk

Python



def getNature(num):
    yakList = []
    yakSum = 0
    natureList = []
    for x in range(1,num+1):
        for y in range(1,x):
            if x % y == 0:
                yakList.append(y)
        #print x,yakList
        if yakList: yakSum = reduce(lambda a,b: a+b, yakList)
        if yakSum == x: natureList.append(x)
        yakList =[]
        yakSum = 0
    print natureList

2016/12/29 16:23

오준균


#복잡도 때문에 와일문쓰면 겁나게 느려지네요 ㅋ ㅋ ㅋ
#대충 로직만 이렇게 싸지르고 갑니다 ㅋ ㅋ ㅋ

#base and pick number
picker,base = 100,10000

**logic = [ n for n in range(base) if str(n) == str(n)[::-1]]
**print logic[picker - 1]


2016/12/29 17:19

Daniel

num = int(input("자연수 N을 입력하세요 : "))
if num < 0:
    num = num * -1
i = 1

while i <= num:
    j = 1
    perfect_number = 0
    while j < i:
        if i % j == 0:
            perfect_number += j
        j = j + 1
    if perfect_number == i:
        print("완전수 : ", i)
    i = i + 1

2016/12/30 15:24

최 인용

매트랩으로 작성하였습니다.

N = input('Input number :');
for i = 1 : N
    tmp = 0;
    for j = 1 : i-1
        if mod(i,j) == 0
            tmp = tmp + j;
        end
    end
    if i == tmp
        disp(i)
    end
end

2017/01/01 21:10

주 현태

#-*- coding:utf-8 -*-

def perpect_number(number):
    for i in range(1, number + 1):
        sum = 0
        for j in range(1, i):
            if i % j == 0:
                sum += j
        if(i == sum):
            print '완전수: {}'. format(sum)


perpect_num = int(raw_input('N이하의 모든 완전수 : '))
perpect_number(perpect_num)

2017/01/02 10:47

or clian

import javax.swing.JOptionPane;

public class lv1_2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int userinputnumber = Integer.parseInt(JOptionPane.showInputDialog("자연수를 입력하시오."));


        for(int userinputnumberdown = 1; userinputnumberdown <= userinputnumber ; userinputnumberdown++){
            int sum = 0;
            for(int i=1; i<userinputnumberdown; i++){
                if(userinputnumberdown%i == 0){
                    sum += i;
                }
            }
            if(sum == userinputnumberdown){
                System.out.println(sum);
            }
        }
    }

}

2017/01/02 17:40

Kim Hyeon Joong

def perfectN(a):
    sum=0
    for i in range(1,int(a**0.5)+1):
        if a%i:pass
        else:
            sum=sum+i
            sum=sum+(a/i)
    if (sum-a)==a:
        return sum
n=input("Number=")
for i in range(1,int(n)):
    if perfectN(i):
        print(i,end=" ")

2017/01/04 18:14

Dr.Choi


#include <stdio.h>

void main(void)
{
    int N,num;
    int i;
    int sum =0;
    printf("자연수를 입력하시오\n");
    scanf("%d",&N);
    for(num=1;num<=N;num++)
    {
        for(i=1;i<num;i++)
        {
            if(num%i == 0)
                sum+=i;
        }
        if(sum == num)
            printf("%d ",num);
        sum = 0;
    }
}

c언어로 작성해봤습니다.

숫자가 커질수록 시간이 오래걸리네요

2017/01/05 17:45

김종현

def find_func(num):
    result = 0
    for x in range(1,num):
        if num % x == 0:
            result += x
    if result == num:
        return True

print([x for x in range(2,int(input())+1) if find_func(x)])

#### 2017.01.05 D-413 ####

2017/01/05 23:17

GunBang

n=int(input("N:"))
print([x for x in range(1,n+1) if x==sum(i for i in range(1,x) if x%i==0)])

2017/01/11 18:23

Song Seoha

scala

(1 until scala.io.StdIn.readLine().toInt).foreach(f => {
    var sum = 0
    (1 until f).foreach(i => if (f % i == 0) sum = sum + i)
    if (sum == f) println("완전수 = " + f);
})

2017/01/12 22:52

genius.choi

javascript


let YourNum = Number(prompt());
PerfectNumber(YourNum);

function PerfectNumber(inputNum){
    let result = [];
    let numArray = Array(inputNum).fill().map((_, i) => i+1);   
    for(i of numArray){
        let sum = 0;
        for(j=1;j<=numArray[i];j++){
            if((numArray[i] % j) == 0 && numArray[i] != j){
                sum += j;
            }
        }
        if(numArray[i] == sum){
            result.push(numArray[i]);
        }
    }
    return alert(result);
}

2017/01/13 14:53

권혁기

// C++

int SumD( int nValue )
{
    int nSum    = 0;
    int nData   = nValue - 1;

    while( nData > 0 )
    {
        if( nValue % nData == 0 )
        {
            nSum    += nData;
        }

        --nData;
    }

    if( nValue == nSum )
    {
        return nValue;
    }

    return 0;
}

int main()
{
    int nValue  = 0;

    cin >> nValue;

    for( int x = 0 ; x <= nValue ; ++x )
    {
        if( SumD( x ) != 0 )
        {
            cout << x << "\n";
        }
    }

    return 0;
}

2017/01/13 16:00

정 훈희

include

void perfect(int N) { for (int i = 2; i <= N; i++) { if (yaksu(i) + 1 == i) { printf("%2d", i); } } }

int yaksu(int a) { int sum = 0; for (int i = 2; i <= a/2; i++) { if (a%i != 0) { continue; } sum = sum + i; } return sum; }

int main(void) { int N; scanf_s("%d", &N);

perfect(N);


return 0;

}

2017/01/14 20:10

민영현

public class Hello {

public static void main(String[] args) {

    System.out.println("숫자 N을 입력하세요.");
    Scanner s = new Scanner(System.in);
    int input = s.nextInt();
    int sum = 0;

    for(int i=1; i<=input; i++){

        for(int j=1; j<i; j++){
            if(i%j == 0){
                sum += j;
            }
        }

        if(i==sum){
            System.out.print(i+" ");
        }

        sum = 0;

    }

}

}

2017/01/14 22:11

박 승민

include

include

int perfect_num(int n) { int i, sum = 1; for (i = 2; i <= (int)sqrt(n); i++) { if ((n%i == 0) && (n/i != i)) sum += (i+n/i); else if ((n%i == 0) && (n/i == i)) sum += i; else continue; } if (sum == n) return 1; else return 0; }

int main() { int i, n; scanf("%d", &n); for (i = 2; i <= n; i++) { if (perfect_num(i) == 1) printf("%d\n", i); } return 0; }

2017/01/17 14:37

박 정환

include

void main(void) { int N,num; int i; int sum =0; printf("자연수를 입력하시오\n"); scanf("%d",&N); for(num=1;num<=N;num++) { for(i=1;i<num;i++) { if(num%i == 0) sum+=i; } if(sum == num) printf("%d ",num); sum = 0; } }

2017/01/17 15:17

박 정환


#include<stdio.h>

int main(void)
{
    int n;
    int tot;

    scanf("%d", &n);

    for(int i = 1; i <= n; i++)
    {
        tot = 1;

        for(int j = 2; j < i; j++)
        {
            if(i %j == 0)
                tot += j;
        }

        if(i == tot)
            printf("%d ", i);
    }

    return 0;
}

2017/01/18 15:21

CodingMan

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int num;
    int sum = 0;
    int *arr;

    printf("입력 \n");
    printf(">> ");
    scanf_s("%d", &num);
    printf("\n");
    arr = (int*)malloc(num * sizeof(int));

    *arr = NULL;
    for (int i = 1; i < num; i++)
    {
        for (int j = 1; j < i; j++)
        {
            if (i % j == 0)
                sum += j;
        }
        if (sum == i && sum != 1)
        {
            arr[i] = sum;
        }
        else arr[i] = NULL;
        sum = 0;
    }

    printf("\n");
    printf("%d전까지의 완전수 : ", num);

    for (int i = 0; i < num; i++)
    {
        if (arr[i] != 0 && arr[i] != 1 && arr[i] != NULL)
            printf("%d ", arr[i]);
    }
}

2017/01/20 05:25

정세화

Scanner sc = new Scanner(System.in);

    int num = sc.nextInt();
    int sum = 0;
    for (int i=1; i<num; i++) {
        sum = 0;

        for(int j=1; j<i; j++){
            if(i%j == 0){
                sum+=j;
            }
        }

        if(i == sum){
            System.out.println(sum);
        }
    }

2017/01/20 19:35

Juni

n = int(input("자연수 입력 > ")) result = 0

for i in range(1,n+1):

for j in range(1,i):
    if i%j==0:
        result += j
if result == i:
    print("%d "%(result),end=' ')
result = 0

2017/01/22 00:32

쑤어이대

무식하게 파이썬(Python3)으로 짜 보았습니다.

def perfect_number(N):
    temp = 0
    for i in range(1, N+1):
        for j in range(1, i+1):
            if i == j:
                break
            elif i % j == 0:
                temp += j
        if i == temp:
            print(i)
        temp = 0

perfect_number(int(input()))

2017/01/22 15:38

Envil_Saintan

파이썬을 이제 막 공부하고 있는 학생입니다. 좋은 문제 감사합니다.

# 숫자 입력
N = int(input("완전수를 확인합니다 :  "))

def perfect_num(N):
    list1 = []
    for s in range(1, N + 1): # 입력 받은 값 이하의 숫자들 범위 중에서 반복
        list2 = [] # 약수의 합을 담는 리스트
        for i in range(1, s): 
            if s%i ==0:
                list2.append(i) 
        if sum(list2) == s: # 완전수인지를 확인
            list1.append(s)
    return list1 # 완전수 리스트 return

print(perfect_num(N))

2017/01/22 16:56

최경빈

#include<iostream>
using namespace std;

int yack_sum(int num)
{
    int sum = 0;
    for (int i = 1; i <= num / 2; i++)
    {
        if (num % i == 0)
        {
            sum += i;
        }
    }
    return sum;
}

void perfect_num(int num)
{
    for (int i = 1; i <= num; i++)
    {
        if (yack_sum(i) == i)
            cout << i << " ";
    }
}

int main()
{
    int input;
    cin >> input;
    perfect_num(input);
}

2017/01/23 13:23

이현섭

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace submit
{
    class Program
    {
        static void Main(string[] args)
        {
            int input,sum;
            input = Convert.ToInt32(Console.ReadLine());

            for (int i = 1;i <= input; i++)
            {
                sum = 0;
                for (int j = 1;j < i; j++)
                {
                    if (i % j == 0)
                    {
                        sum = sum + j;
                    }
                }

                if (sum == i)
                {
                    Console.WriteLine("완전수: " + i);
                }             
            }
        }
    }
}

2017/01/23 19:15

Vieta mc

#include <stdio.h>

void main()
{
    int n = 0;
    int sum = 0;

    scanf("%d", &n);

    for ( int i = 1; i < n; i++ )
    {
        for ( int j = 1; j <= i/2; j++ )
        {
            if ( i % j == 0 )
                sum += j;
        }
        if ( sum == i )
            printf("%d ", i);
        sum = 0;
    }
}

2017/01/25 19:56

장예훈

#include <stdio.h>
#pragma warning(disable:4996)
void yaksu(int n) {
    int result = 0;
    for (int i = 1; i < n; i++) {
        if (n%i == 0) result += i;
    }
    if (result == n)
        printf("%d\n", n);
}
int main(void) {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        yaksu(i);
}

2017/01/26 11:01

도야지

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;

class Calc{
    int num;
    ArrayList<Integer> list = new ArrayList<Integer>(); 
    public void setNum(int num){
        this.num = num;
    }
    public void findDivsor(){
        int i=1;
        while(true){
            if(this.num%i == 0) list.add(new Integer(i)); 
            else if(i > num/2) break;
            i++;
        }
    }
    public void isPerfect(){
        Iterator<Integer> iter = list.iterator();
        int sum=0;
        while(iter.hasNext()) sum += iter.next();
        if(sum == this.num) System.out.println(this.num + " is a perfect number!");
        else System.out.println(this.num + " is not a perfect number!");
    }
}

public class test5 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Calc c = new Calc();

        c.setNum(sc.nextInt());
        c.findDivsor();
        c.isPerfect();


    }

}

2017/01/30 18:28

김찬

파이썬 3로 작성해 보았습니다.

def is_perfect_num(num):
    p = 0

    for i in range(1, num):
        if num % i == 0:
            p += i

    if p == num:
        return True
    else:
        return False


raw_num = input("자연수를 입력하세요! ")
num = int(raw_num)

for n in range(1, num+1):
    if is_perfect_num(n):
        print(n, end=' ')

2017/01/31 18:26

seeker

#include<iostream>
using namespace std;

int main()
{
    int n;
    int sum = 0;
    cin >> n;

    for (int i = 1; i < n; i++)
    {
        if (n % i == 0)
            sum += i;
    }
    cout << sum << endl;
}

2017/01/31 23:18

이정후

# include <stdio.h>

int main(int argc,char*argv[]){
    int n=2,j=1,k,m=0;

    printf("완전수:");
    while(TRUE){m=0;
        for(j=1;j<n;j++){
        k=n%j;
        if(k==0)
            m+=j;
        }
            if(n==m) printf("%d,",n);
            n++;
            if(n==1001) break;


    }printf("\b \n");


    return 0;
}

2017/02/01 01:03

이상목

def perfect_number(num): sum = 0 for i in range(1,num): if num%i == 0 : sum += i

if sum == num : return True
else : return False

N = int(input())

for i in range(1,N+1) : if perfect_number(i): print(i)

2017/02/02 18:09

jary

C로 작성하였습니다.

#include <stdio.h>

void main() {
    int N, i, j, sig;
    printf("Please enter a positive integer: ");
    scanf("%d", &N);

    for (i=1; i<=N; i++) {
        sig =0;
        for (j=1; j<=i; j++) {

            if(i % j == 0) {
                sig += j;
            }
            else {
                continue;
            }
        }
        if ((sig-i) == i) {
            printf("%d is a perfect number.\n", i);
        }
    }


    return 0;
}

그냥 심플하게 모든 숫자를 일일이 확인하는 아주 naive한 방법이라 알고리즘이라고 부를만한게 없네요 하하 ^^;;

2017/02/03 06:51

doryahn

C로 다시 작성하여보았습니다.

#include <stdio.h>

void main() {
    int N, i, j, sig, id;
    printf("Please enter a positive integer: ");
    scanf("%d", &N);
    i=2;
    while (i<=N) {
        sig =1;
        j = 2;
        id = i;
        while (j<id) {
            if(i % j == 0) {
                sig += i/j;
                id=i/j;
                sig += j++;                
            }
            else {
                j++;
            }
        }
        if (sig == i) {
            printf("%d is a perfect number.\n", i);
        }
        i++;
    }


    return 0;
}

완전수인지 확인을 할때 모든 수를 대입하여 보지 않아도 된다는 점에 착안을 하여 바로 전에 올린 녀석을 수정하였습니다.

예를 들자면, 6을 2로 나누었을 때 나머지가 없이 몫이 3으로 나눠집니다. 이 때 2뿐만 아닌 3도 약수이기 때문에 후에 3을 다시 대입하여서

약수인지를 확인할 필요가 없습니다. 또 작은 수에서 시작해서 점점 큰수로 나누기를 하고 있기 때문에 3보다 큰 수도 확인할 필요가

없습니다. 이런 사실을 이용하여 반복 횟수를 줄였습니다.

100000을 대입해 보시면 이 방법이 훨씬 빠르다는 사실을 쉽게 확인하실 수 있습니다.

감사합니다. ^^

2017/02/03 14:18

doryahn

import math
def complete(number):
    A = 1
    L_final =[]
    while A <= number:
        L = [1]
        for x in range(2,int(math.sqrt(A)+1)):
            if A%x == 0:
                L.append(x)
                L.append(int(A/x))
        if sum(L) == A:
            L_final.append(A)
        A += 1
        print A
    return L_final

2017/02/07 00:02

임재석

#include <stdio.h>



int main()
{
    int num = 0;
    int result = 0;
    printf("자연수 N을 입력하세요 : ");
    scanf_s("%d", &num);

    printf("완전수 : ");
    for (int j = num; j > 0; j--)
    {
        for (int i = j-1; i > 0; i--)
        {
            if (j % i == 0)
            {
                result += i;
            }
        }

        if (result == j)
        {

            printf("%d ", j);
        }
        result = 0;
    }
    printf("\n");

    return 0;
}

2017/02/13 00:59

dong lee

자바입니다
public class PerfNu {
    public static void calcPerfNu(int n) {
        int sum = 0;
        for (int i = 1; i < n; i++) {
            if (n % i == 0) {
                sum += i;
            }

        }
        if (n == sum) {
            System.out.println("완전수: " + sum);
        }

    }

    public static void prnPerfNu(int n) {
        for (int i = 1; i <= n; i++) {
            calcPerfNu(i);
        }
    }

    public static void main(String[] args) {
        prnPerfNu(30);

    }

}

2017/02/13 10:29

김희유 (밍밍한 자막)

#include <iostream>

using namespace std;

int main()
{
    int N;
    int sum = 0;

    cout << "자연수 입력 : ";
    cin >> N;

    for (int j = 1; j <= N; j++)
    {
        sum = 0;
        for (int i = 1; i < j; i++)
        {
            if (j%i == 0)
            {
                sum += i;
            }
        }

        if (sum == j)
        {
            printf("%d까지의 완전수 : %d\n", N, j);
        }
    }
    return 0;
}

2017/02/13 11:48

정주영

def perfect_number(n):
    div=[]
    for i in range(1,n):
        if n%i==0:
            div+=[i]
    if sum(div)==n:
        return 1
    else:
        return 0
def main(n):
    result=[]
    for i in range(n):
        if perfect_number(i+1)==1:
            result+=[i+1]
    print(result)

2017/02/13 19:04

김구경

N = input("숫자를 입력하세요: ")

def is_perfect(n):
    if n == sum_divisor(n):
        return True
    else:
        return False
def sum_divisor(x):
    i = 0
    for k in range(1,x):
        if x%k == 0:
            i = i + k
    return i

per_list=[]
for num in range(1, int(N)+1):
    if is_perfect(num):
        per_list.append(num)

print(per_list)

2017/02/14 02:00

권다락

n = input("Enter number: ")
sum_num = 0

for number in range(1, n+1):
    for num in range(1,number):
        if number%num == 0:
            sum_num += num
    if number == sum_num:
        print(number)
    sum_num = 0

2017/02/14 23:51

Scott.Jun

#include <iostream>
using namespace std;

int main()
{
    int N;  // 입력받을 자연수
    cout << "자연수를 입력하세요  ";
    cin >> N;
    if (N <= 0)
    {
        cout << "자연수가 아닙니다. 다시 입력해주세요.  ";
        cin >> N;
    }
    for (int i = 2; i <= N; i++)    //입력받은 자연수 보다 작은 자연수 확인
    {
        int sum = 0;
        for (int j = 1; j < i; j++) // 자연수의 약수 확인
        {
            if (i%j == 0)   // 약수이면
            {
                sum += j;   
            }
        }
        if (sum == i)       // 완전수인지 확인
            cout << i << " ";
    }

    return 0;
}


2017/02/15 09:00

웅이

/*

자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
예를 들면, 6과 28은 완전수이다. 6=1+2+3 // 1,2,3은 각각 6의 약수 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.

*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <iostream>
#include <stdlib.h>

using namespace std;

const int INPUT_NUMBER_MAX = 10000;

int main(void)
{
    int inputNumber = -1;
    int capacityPerfect = 0;
    int* perfectNumber = new int[0];

    cout << "숫자를 입력하세요(1~10000) : ";
    cin >> inputNumber;
    if (inputNumber >= 1 && inputNumber <= 10000)
    {
        for (int i = 1; i <= inputNumber; i++)
        {
            int* measureNumber = new int[0];
            int addNumber = 0;
            int devideNumber = 1;
            int capacity = 0;
            for (devideNumber; devideNumber*devideNumber < i; devideNumber++)
            {
                if (i%devideNumber == 0)
                {
                        int* temp = new int[capacity];
                        for (int j = 0; j < capacity; j++)
                        {
                            temp[j] = measureNumber[j];
                        }
                        delete[] measureNumber;

                        capacity += 2;

                        measureNumber = new int[capacity];
                        for (int j = 0; j < capacity - 2; j++)
                        {
                            measureNumber[j] = temp[j];
                        }
                        measureNumber[capacity - 2] = devideNumber;
                        measureNumber[capacity - 1] = i / devideNumber;
                        delete[] temp;
                }
            }
            if (devideNumber*devideNumber == i)
            {
                int* temp = new int[capacity];
                for (int j = 0; j < capacity; j++)
                {
                    temp[j] = measureNumber[j];
                }
                delete[] measureNumber;

                capacity++;

                measureNumber = new int[capacity];
                for (int j = 0; j < capacity - 1; j++)
                {
                    measureNumber[j] = temp[j];
                }
                measureNumber[capacity - 1] = devideNumber;
                delete[] temp;
            }
            for (int j = 0; j < capacity; j++)
            {
                addNumber += measureNumber[j];
            }
            if ((addNumber-i) == i)
            {
                int* temp = new int[capacityPerfect];
                for (int j = 0; j < capacityPerfect; j++)
                {
                    temp[j] = perfectNumber[j];
                }
                delete[] perfectNumber;

                capacityPerfect++;

                perfectNumber = new int[capacityPerfect];
                for (int j = 0; j < capacityPerfect - 1; j++)
                {
                    perfectNumber[j] = temp[j];
                }
                perfectNumber[capacityPerfect - 1] = i;
                delete[] temp;
            }
            delete[] measureNumber;
        }
        for(int i = 0 ; i < capacityPerfect ; i++)
        { 
            cout << perfectNumber[i] << endl;
        }
        return 0;
    }
}

2017/02/16 14:45

강병구 (peanutBro)

public class test{

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.print("Input: ");

        int num = sc.nextInt();

        find_perfectnumder(num);
    }

    public static void find_perfectnumder(int s){

        List<Object> smallarray = new ArrayList<Object>();
        int count_smallnum=0;
        int size = s;
        int tail = 0;   
        int total=0;

        for(int i=1; i <= size; i++){
            for(int j = 1; j < i; j++){

                tail = i%j;
                if(tail==0  ){

                    smallarray.add(count_smallnum,j);
                    count_smallnum++;

                }

            }

            for(int k=0; k <  count_smallnum; k++){

                total += (int) smallarray.get(k);

            }
            if(total == i){
                System.out.printf("Perfect number is = %d  \n",total);
            }
            count_smallnum=0;
            total = 0;

        }

    }

2017/02/17 01:01

Jenny

# 1
n = int(input("Input number : "))
divisors = []
for i in range(1, n + 1):
    divisors_sum = []
    for j in range(1, i):
        if i % j == 0:
            divisors_sum.append(j)
    if sum(divisors_sum) == i:
        divisors.append(i)

print divisors

# 2 (박시우님 코드 보고 다시)
print list(filter(lambda i: sum(j for j in range(1, i) if i % j == 0) == i, range(1, n)))

2017/02/18 00:02

jackson

import sys

number_input = int(sys.argv[1])

def isPerfectNumber(number):
    divisor = []
    for step in range(1, int(number/2)+1):
        if number % step == 0:
            divisor.append(step)
    if number == sum(divisor):
        return True
    return False


perfect_numbers = []
for number in range(1, number_input+1):
    if isPerfectNumber(number):
        print("%d is perfect number" % number)
        perfect_numbers.append(number)
    else:
        print("%d is no perfect number" % number)

print("perfect numbers found :", perfect_numbers)

OUTPUT 십만(100000)이하의 숫자에 대해서 모두 조사했는데 4개뿐이네요 perfect numbers found : [6, 28, 496, 8128]

2017/02/18 01:06

Bongjun Jang

% in matlab
N=input('자연수를 입력해주세요 : ');
P=[];
for n1=1:N;
    K=[1];
    for n2=2:n1;
        a1=n1/n2-floor(n1/n2);
        if a1==0;
            K=[K n2];
        end
    end
    K(end)=0;
    a2=sum(K);
    if a2==n1
        P=[P a2];
    end
end

2017/02/19 01:40

Merchen

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectNum(int number);

int main()
{
    int input;

    cin >> input;
    for (int i = 2; i <= input; i++) {
        if (isPerfectNum(i)) {
            cout << i << endl;
        }
    }

    return 0;
}

bool isPerfectNum(int number)
{
    int sum = 0;
    int until = sqrt(number);

    for (int i = 2; i <= until; i++) {
        if (number % i == 0) {
            if (i * i != number) {
                sum += number / i;
            }
            sum += i;
        }
    }

    return (sum + 1) == number;
}

c++ 로 작성해봤습니다.

2017/02/21 16:26

Snow Chris

var n = prompt("What is the perfect number below n");
var arr = [];

var perfect = function(input){
  for(var n=1; n<=input; n++){

    var sum = 0;
    for(var i = 0; i <= n/2; i++){  
      if(n % i == 0){
        sum += i;
      }
    }
    if(sum === n){
      arr.push(n);
    }
  }
}

perfect(n);
alert(arr)

2017/02/23 02:35

Sehun

N = int(raw_input("Give me a number :"))

answer = [] # 완전수 묶음

for y in range(1, N+1): mod = [] # 약수 묶음

for x in range (1, y):

    if y%x == 0:
        mod.append(x)

if sum(mod) == y:
    answer.append(y)

print answer

파이썬 2.7 버전

2017/02/24 19:58

李愼言(이신언)


def checkPerf(target, tList):
    addrst = 0
    for i in range(1, target):
        if target%(i) == 0 : addrst+=i

    if addrst == target : tList.append(target)


print('완전수 출력하기\n')
d = int(input('자연수를 입력하시오 : '))
perfNum = []

for i in range(1, d+1) : checkPerf(i, perfNum)
print(perfNum)

2017/02/25 22:16

매너주니

import java.util.*;
public class no1 {

public static void main(String [] args) {
    Scanner scanner = new Scanner(System.in);
    int num;
    int a = scanner.nextInt();

    for(int i=2 ; i<=a ; i++) {
        num=i;
        for(int j=i-1 ; j>=1 ; j--) {
            if(i%j==0) {
                num=num-j;
            }
            }
        if(num==0) {
            System.out.print(i+" ");
        }
    }
}
}

2017/02/26 13:45

강민수

def perfect_num(N: object) -> object: n = N + 1 for i in range(1, n): a = [] b = [] if N % i == 0: a += [i] if sum(a) == N: b += a n -= 1

return b

```

2017/02/26 22:43

won jo

python으로 해봤어요. 첫 문제 풀이네요 1시간넘게 생각해서 했습니다. 재능이 없는건가

# perNum.py
num = int(input("자연수를 입력해주세요 \n"))
def perNum(num):
    result = []
    for i in range(1, num+1):
        x = 0
        for j in range(1, i):
            if i % j == 0:
                x += j
        if x == i :
            result.append(x)
    print(result)
perNum(num)

2017/02/27 12:23

doolki

파이썬

int1 = int(input("자연수 입력: ")) 
# 입력값을 받습니다. 

a = [x for x in range(1,int1) if int1 % x == 0] 
# range() 사이에서 int1을 x로 나누어 나머지가 0인 숫자만 리스트 a에 담습니다. 

if sum(a) == int1:
     print("%s" % a)
# 리스트 a의 합이 최초 입력 받은 입력값인 자연수와 같아야만 결과를 출력합니다. 


2017/02/28 16:34

황인우

n = int(input('자연수 N 을 입력하세요'))
total = 0
for number in range(1,n+1):
    for i in range(1,number):
        if number % i == 0:
            total += i

    if total == number:
        print('Perfect number : %d' %number)
    total = 0

다른 분들과 비슷하긴 하지만.. 본인이 푸는데 의의가 있겠죠!?! ㅋㅋㅋ

2017/02/28 18:43

최해준

10000이상부터 겁나 느려집니다.ㅠㅠ

static void Main(string[] args)
        {
            Program p = new Program();
            Stopwatch sw = new Stopwatch();
            int input = Convert.ToInt32(Console.ReadLine());
            sw.Start();
            p.isPerpectNumber(input);
            sw.Stop();
            Console.WriteLine("프로그램 실행시간 :" +sw.ElapsedMilliseconds.ToString() + "ms");
            Console.ReadLine();
        }

        private void isPerpectNumber(int input)
        {
            for(int i = 1; i <= input; i++)
            {
                /////////////리스트에 약수 넣기///////////////
                List<int> divisor = new List<int>();
                for(int m = 1; m < i; m++)
                {
                    if(i % m == 0)
                    {
                        divisor.Add(m);
                    }
                }

                ///////////// 완전수인지 체크///////////////
                int match_sum = 0;
                foreach (var divi in divisor)
                {
                    match_sum += divi;
                }
                if (match_sum == i)
                {
                    Console.WriteLine(i + " ->완전수");
                }
                divisor.Clear();
            }
        }

2017/03/02 16:40

놀고싶다

def checkPerfect(n):

    result=0

    for x in range(1,n):
        if n%x == 0:
            result += x

    if result == n:
        print(result)
        print("완전수입니다")


def seekPerfect(n):

    result = 0

    for x in range(1,n+1):
        checkPerfect(x)

2017/03/04 00:56

JH

언어는 c언어 입니다. 반복문 횟수를 줄이기위해 생각을 해 봤는데 temp라는 변수를 둬서 num을 i로 나눠서 생긴 몫을 지정했습니다. 36을 예로 들자면 총 약수는 1,2,3,4,6,9,12,18,36 이렇게 있고 i = 2일 때 temp = 18, i = 3일 때 temp = 12 이렇게 되는 식입니다. 이렇게 해서 i와 i로 나눈 몫을 함꺼번에 sum에 넣고 i가 temp을 못 넘게 지정해 횟수를 줄이도록 해 봤습니다. for문 조건식에서 i < num/2는 i가 num이 소수일 때를 위해 뒀고, sum <= num은 약수의 총합이 num을 넘으면 완전수가 아니니까 끝나게 할려고 했습니다.

#include<stdio.h>
int is_perfect_number(int num) {
    int sum = 1, temp = num;
    for (int i = 2; i < num / 2 & sum <= num & i < temp; i++) {
        if (num % i == 0) {
            if (i == num / i) {
                sum += i; temp = i;
            }
            else {
                sum += i; sum += num / i; temp = num / i;
            }
        }
    }
    if (num == sum)
        return 1;
    return 0;
}
int main() {
    int num = 0;
    scanf_s("%d", &num);
    for (int i = 2; i <= num; i++) {
        if (is_perfect_number(i) == 1)
            printf("%d ", i);
    }
    return 0;
}

2017/03/04 20:01

KimSeonbin

#include <stdio.h>

void main(void)
{
    int num = 0;        // 입력받는 값.
    scanf("%d", &num);
    for (int i = 1; i <= num; i++)
    {
        int sum = 0;        // 해당하는 수가 완전수인지 비교를 위한 값.
        for (int j = 1; j < i; j++)
        {
            if (i%j == 0)
            {
                sum += j;
            }
        }
        if (sum == i)
        {
            printf("%d ", i);
        }
    }
}

2017/03/04 21:48

강창기

#include <iostream>
#include <windows.h>
using namespace std;

void PerfectNumber(int n)
{
    int i = 0;
    int sum = 0;

    for (i = 1; i <= n; i++)
    {
        for (int j = 1; j < i; j++)
        {
            if (i%j == 0)
                sum += j;
        }

        if (i == sum)
            cout << sum << "\n";

        sum = 0;
    }
}

int main()
{
    int i, n;
    cout << "정수를 입력하세요.\n";
    cin >> n;

    PerfectNumber(n);

    system("pause");
    return 0;
}

2017/03/05 23:19

토순이메롱

#함수부

#입력받은 숫자 % 숫자보다 작은자연수 == 0 인 수들을 다 더했을때
#자기 num 이 나오면 된다.

def cal(num):
    for i in range (1,num+1):
        result = 0
        for j in range(1, i):
            if((i % j == 0) & (i != j)):
                result = result + j
        if(result == i):
            print(i)



#실행부분

#입력받은 숫자
num = input("자연수를 입력하세요: ")
num = int(num)


#함수 호출
cal(num)

2017/03/07 17:58

christinehong

num=int(input('Input number:'))
output=[]
for x in range(1,num+1):
    if x==sum(y for y in range(1,x) if x%y==0):
        output.append(x)

print output

2017/03/08 00:12

jae hoon Choi

 _ = [*(print(x) for x in range(1, int(input('>>>'))+1) if x == sum(y for y in range(1, x) if x%y == 0))]

한줄 풀이입니다. 앞의 _ =은 빼도 됩니다.

파이썬 3.6.0 64

2017/03/10 14:48

Flair Sizz

c# 으로 해봤어요. 어렵네요.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Practice001
{
    class PerfectNumber
    {
        int N;
        int Temp;

        // 자연수 N 입력 메서드
        // 양수 판별 알고리즘 포함
        // 양수면 OutPutN() 메서드 실행
        public void InputN()
        {
            int.TryParse(Console.ReadLine(), out N);

            if (N < 0)
            {
                Console.WriteLine("양수를 입력하세요.");

                InputN();
            }
            else if (N > 0)
            {
                Console.WriteLine("양수입니다.");

                OutPutN();
            }
        }

        int NChecker()
        {
            int temp = 0;

            for (int i = 1; i <= N; i++)
                if (N % i == 0 && N / i != N)
                    temp += N / i;

            return temp;
        }

        // 완전수를 출력하는 메서드
        // 반복문을 통해 자연수 N을 나누어준다.
        private void OutPutN()
        {
            Temp = NChecker();

            if (Temp == N)
           {
                Console.WriteLine("완전수는 : ");

                for (int i = 1; i <= N; i++)
                    if (N % i == 0 && N / i != N)
                       Console.WriteLine(N / i);
            }
            else
                Console.WriteLine("완전수가 아닙니다.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 객체 생성 및 InputN() 메서드 실행.
            PerfectNumber pn = new PerfectNumber();

            pn.InputN();
        }
    }
}

2017/03/10 20:25

송상호

package primary;

import java.util.ArrayList;

public class CodingDojang01 {
    /**
     * 자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
     * 예를 들면, 6과 28은 완전수이다. 6=1+2+3 // 1,2,3은 각각 6의 약수 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
     * 입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.
     */
    public static void main(String[] args) throws Exception {
        args = new String[1]; args[0] = "28";

        ArrayList<Integer> perfectNumbers = new ArrayList<>();
        ArrayList<Integer> temps = new ArrayList<>();

        if(args == null || args.length != 1)
            throw new Exception();

        int input = Integer.parseInt(args[0]);
        for(int i=1; i<=input; i++) {

            temps.clear();
            for(int divisor=1; divisor<=i; divisor++) {
                int quotient = i/divisor;
                int reminder = i%divisor;
                if(divisor<quotient && reminder == 0) {
                    temps.add(new Integer(divisor));
                    if(quotient != i)
                        temps.add(new Integer(quotient));
                }//END OF IF
            }//END OF FOR-LOOP : 2

            int sum = 0;
            for(int temp : temps) {
                sum += temp;
            }


            if(sum == i) {
                perfectNumbers.add(new Integer(i));
            }
        }//END OF FOR-LOOP : 1

        for(int perfectNumber : perfectNumbers) {
            System.out.println(perfectNumber);
        }
    }//END OF FUNCTION
}//END OF CLASS

2017/03/12 20:45

herdin86

import java.util.Scanner;

public class perfectsu2 {

public static void main(String[] args) {

    System.out.print("숫자를 입력하세요 : ");
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    System.out.println(num);
    int sum = 0;

    for(int i = 1; i <=num; i++)
    {           
        for(int j=1; j<i; j++)
        {
            if(i % j == 0) 
            {
                sum += j;
            }
        }
        if(i == sum) 
        {
            System.out.println(i); //출력
        }
        sum=0;      
    }               
}

}

2017/03/13 16:05

Kwon Steve

N = int(input("N: "))
for n in range(1,N):
    sum = 0
    i = 1
    while i <= n/2:
        if n % i == 0: sum = sum + i
        i = i + 1
    if sum == n: print(n)

2017/03/15 17:10

Woo MinHwa

python 2.7 version

N = int(raw_input("Give me a number :"))

for t in range(1, N+1): a = []

for i in range(1, t):
    if t % i == 0 :
        a.append(i)
if sum(a) == t:
    b.append(t)

print b

2017/03/16 02:36

李愼言(이신언)

Java 입니다

import java.util.Scanner;

public class Test {

        public static void Excute(){

            Scanner scan = new Scanner(System.in);
            int limit = 0;

            System.out.println("## 완전수 구하기");

            boolean s = false;
            do{
                try{                    
                    System.out.println("");
                    System.out.print("어디까지 구할지 입력시오 : ");
                    limit = scan.nextInt();
                    if(0 < limit && limit <= Integer.MAX_VALUE){
                        s = true;                       
                    }else{
                        System.out.println("## 2147483647 이하의 자연수만 입력가능 합니다. ");
                    }
                }catch(Exception e){
                    e.printStackTrace();
                    System.out.println("## 자연수만 입력가능 합니다. ");
                }   
            }
            while(!s);
            scan.close();
            for(int i =1;i<=limit;i++){
                if(chkCnum(i)){
                    System.out.println(i);
                }
            }                
        }

        public static boolean chkCnum(int n){
            int result=0;           
            for(int i=1;i<=(n/2);i++){
                if(n%i ==0)result+=i;               
            }           
            if(result == n) return true;                    
            return false;
        }

        public static void main(String[] args) {
             Excute();
        }       

}

2017/03/17 13:54

코코팜팜

Python 3.6.0 입니다

num=int(input('input number : '))

for i in range(1,num+1):
    a=sum([x for x in range(1,i) if i%x==0])
    if i==a:
        print(i)



2017/03/17 20:30

c0din9

#include <stdio.h>

int main()
{
    int n;
    int i;
    int j;
    int k;
    int sum;
    printf("완전수를 찾아라.\n");
    printf("입력한 수 이하의 모든 완전수를 찾는 프로그램입니다.\n");
    printf("자연수를 입력하세요 : \n");
    scanf("%d", &n);
    printf("완전수는 다음과 같다\n");
    for (i = 1; i < n+1;i++)
    {
        sum = 0;
        for (j = 1; j < i; j++)
        {
            if (i%j == 0)
            {
                    sum = j + sum;
            }

        }
        if (sum == i)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

2017/03/19 15:22

erica

python입니다.

a=int(input("숫자를 입력하세요: "))
div1=[]
for n in range(1,a):
    div2=[]
    for i in range(1,n):
        if n%i == 0:
            div2.append(i)
    if sum(div2) == n:
        div1.append(n)
print(div1)

2017/03/20 06:02

joefox

N

for i in range(N-1): diviserlist = [] if divmod(N, i) ==0: diviserlist.append(i) elif: pass

print(diviserlist)

2017/03/20 22:03

jiyoung yun

#include <stdio.h>

int main(void)
{
    int i;
    int sum=0;
    int pnum;

    printf("입력: ");
    scanf("%d" , &pnum);

    while(pnum != 0)
    {
        for(i=1; i<pnum; i++)
        {
            if(pnum%i == 0)
                sum += i;
        }

        if(sum == pnum)
        {
            printf("%d ", sum);
        }

        sum=0;
        pnum--;
    }

    return 0;
}


2017/03/21 19:55

# pnumber.py

n = int(input("자연수 입력 > "))
result = 0

for i in range(1,n+1):

    for j in range(1,i):
        if i%j==0:
            result += j
    if result == i:
        print("%d "%(result),end=' ')
    result = 0

2017/03/22 21:02

TV 프론트

import java.util.ArrayList;

public class PerfectTest {

    public static void main(String[] args) {

        long input = 10000;


        for (long i = 2; i < input; i++){
            long sum = 0;
            ArrayList<Long> al = new ArrayList<>();

            for (long j = 1; j < i; j++){
                if (i % j == 0){
                    al.add(j);
                    sum += j;
                }
            }
            if (sum == i){
                System.out.print(i+" :");

                for (long num: al){
                    System.out.print(num + " ");
                }
                System.out.println();
            }
        }
        System.out.println("END");
    }
}

2017/03/23 16:28

Yong Seok Bae

include

include

using namespace std;

int main() { int num; int count=0; printf("n 입력 : "); cin >> num;

for (int i = 2; i <= num; i++) //n이하의 완전수 for문
{
    count = 0;
    for (int j = 1; j < i; j++)
    {
        if (i%j == 0)
        {
            count += j;
        }
    }
    if (i == count)
    {
        printf("완전수 : %d \n", i);
    }
}


return 0;

}

2017/03/25 13:14

PARK JINHOH

#include <stdio.h>

int main() {

    int end, cnt[10] = { 0, };
    int i, sum=0, j;

    printf("input :");
    scanf("%d", &end);

    for (i = 1; i <= end; i++) {
        for (j = 1; j < i; j++)
            if (i%j==0)
                sum += j;

        if (sum == i)
            printf("%d\t", i);
        sum = 0;
    }

}

2017/03/28 10:07

dvv lee

package training;

import java.util.Scanner;

/**
 * 자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다. 예를 들면, 6과 28은 완전수이다. 
 * 6=1+2+3 // 1,2,3은 각각 6의 약수 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
 * 입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.
 * 
 * @author Administrator
 *
 */
public class FindPerfectNum {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Please insert Number? ");
        int iNum = sc.nextInt();

        for(int i=1; i<=iNum; i++){
            if(isPerfectNum(i)){
                System.out.println("Perfect Number ========>" + i);
            }
        }
    }

    public static boolean isPerfectNum(int iNum) {
        int iSum = 0;
        for(int i=1;i<iNum;i++){
            if(iNum % i == 0){
                iSum = iSum + i;
            }
        }

        if(iSum == iNum && iNum != 1)
            return true;
        else 
            return false;
    }

}

2017/03/28 20:19

acedo

include

int main() { long long n; scanf("%lld", %n); if(n>=6 && n<28) printf("6"); else if(n>=28 && n<496) printf("6, 28"); else if(n>=496 && n<8128) printf("6, 28, 496"); else if(n>=8128 && n<33550336) printf("6,28,496,8128"); else printf("6,28,496,8128,33550336"); return 0; }

2017/03/30 09:58

장현우

n = int(input("Please enter the natural number : ")) print([x for x in range(1, 1+n) if x == sum(y for y in range(1, x) if x%y==0)])

2017/03/30 14:02

Daeseon Baek

public class perfect{

    public static void main(String[] args) {
        int num = 0;

        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            String input = br.readLine();
            num = Integer.parseInt(input);
        } catch (IOException e) {
            e.printStackTrace();
        }

        printPerfectNum(num);

    }

    public static void printPerfectNum(int n){
        for(int i=2; i<=n; i++){
            if(isPerfectNum(i)){
                System.out.print(i + " ");
            }
        }
    }

    public static boolean isPerfectNum(int n){
        int index = n;
        int sum = 1;

        for(int i=2; i <= n; i++){
            if(i > index || i == index){
                break;
            }else{
                if(n%i == 0){
                    index = n/i;
                    sum = sum + i + index;
                }
            }
        }


        if(sum == n){
            return true;
        }else{
            return false;
        }

    }
}

2017/04/03 19:38

yh

#Python 3.5.1

a = []
arg = int(input("숫자를 입력해 주세요"))
for num in range(1,arg+1):
     sum = 0
     for sub in range(1,num):
        if num % sub == 0:
            sum += sub
     if num == sum:
        a.append(num)
print(a)

2017/04/03 21:02

Koh KT

Python 3.4 로 작성했습니다.

def find_factor(input_num):
    factors = []
    for j in range(1, input_num):
        if (input_num % j) == 0:
            factors.append(j)

    return factors

given_number = int(input("Enter number: "))
result = []

for i in range(1, given_number+1):
    factor_sum = sum(find_factor(i))
    if i == factor_sum:
        result.append(i)

print(result)

2017/04/06 06:48

예강효빠

결과입니다. pi@raspberrypi:~/example $ python3 find_factors.py Enter number: 10 [6] pi@raspberrypi:~/example $ python3 find_factors.py Enter number: 100 [6, 28] pi@raspberrypi:~/example $ python3 find_factors.py Enter number: 1000 [6, 28, 496] pi@raspberrypi:~/example $ python3 find_factors.py Enter number: 10000 [6, 28, 496, 8128] - 예강효빠, 2017/04/06 06:59
def perf(n):
    result = [1]
    for nums in range(1,n+1):
        num_list = []
        for ns in range(1,nums): #nums 이하의 자연수로 나누어서 나머지가 0이면 약수
            if nums%ns == 0 : #약수면 num_list에 추가 : num_list 에 들어있는 건 약수!
                num_list.append(ns)
        if sum(num_list) == nums : result.append(nums) #num_list의 sum이 nums라면 완전수 : result에 추가

    return result

print(perf(28))

2017/04/07 23:37

Park Jay

def p(n):
    return n==sum([x for x in range(1,n) if n % x == 0])

def print_all_perfect_number(n):
    print([x for x in range(1,n+1) if p(x)])

print_all_perfect_number()

2017/04/08 17:09

박찬규

def perfect(number):
    result = 0
    answer = []
    for n in range(1, number+1):
        for i in range(1, n):
            if n % i == 0:
                result += i
        if result == n:
            answer.append(result)
        result = 0
    print(answer)


2017/04/09 12:11

Hyung-Woo Ryoo

#include <iostream>                                                             

using namespace std;                                                            

int main(void)                                                                  
{                                                                               
        int i;                                                                  
        int j;                                                                  
        int cnt;                                                                
        int sum;                                                                

        cin >> cnt;                                                             

        for (i = 1; i < cnt; i++)                                               
        {                                                                       
                sum = 0;                                                        
                for (j = 1; j < i; j++)                                         
                {                                                               
                        if (i % j == 0)                                         
                                sum += j;                                       
                }                                                               

                if (i == sum)                                                   
                        cout << i << "\t";                                      

        }                                                                       
        cout << endl;                                                           

        return 0;                                                               
}                                                   

수행 시간이 ㄷㄷ,,

2017/04/09 17:49

by코딩요정

#include <stdio.h>

int main(int argc, const char * argv[]) {

    int start, end;
    int temp;
    int sum;

    printf("범위에 따른 숫자를 입력하시오:");
    scanf("%d %d", &start,&end);

    if (start>end) {
        temp=start;
        start=end;
        end=temp;
    }

    for (int i=start; i<end+1; i++)
    {
        sum=0;

        for (int j=1; j<i; j++)
        {

            if (i%j==0) {
                sum+=j;
            }
        }

        if (i==sum) {
            printf("%d ", i);
        }



    }


    return 0;
}

2017/04/12 16:38

김우진

int N, sum;
            ArrayList arr = new ArrayList();

            Console.Write("자연수 N 입력 : ");
            N = inputInt();

            for (int i = 2; i < N; i++)
            {
                sum = 0;
                for (int j = 1; j < i / 2 + 1; j++)
                {
                    if (i % j == 0)
                        sum += j;
                }
                if (i == sum)
                    arr.Add(i);
            }

            for (int k = 0; k < arr.Count; k++)
                Console.WriteLine(arr[k]);
        }

        static int inputInt()
        {
            int ptr = 0; string sptr;
            sptr = Console.ReadLine();
            try
            {
                ptr = Convert.ToInt32(sptr);
            }
            catch (System.OverflowException e)
            {
                Console.WriteLine("다시 입력해주세요.");
            }
            return ptr;

2017/04/14 00:31

얼음별

// 굳이 배열 쓸 필요 없어서 가능한 쉽게 풀다 보니 이렇게 됬네요

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int inputNum = sc.nextInt();
        for(int a = 1; a <= inputNum; a++) {
            int sum = 0;
            for(int b = 1; b < inputNum; b++) {
                if((a % b == 0) && (a != b)) {
                    sum += b;
                }
            }
            if(sum == a) {
                System.out.print(sum +" ");
            }
        }
    }
}

2017/04/15 18:22

SungWook Jung

# 코딩도장 완전수 구하기
# 자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
# 예를 들면, 6과 28은 완전수이다.  6의 약수는 1, 2, 3이고 이들의 합은 6이기 때문이다.
# 입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.

# J의 생각
#
# 1. for와 n in range(1, N+1)을 이용해서 하나씩 숫자를 늘려간다.
#
# 2. n의 약수를 구한다.
# 2.1 1은 무조건 1의 약수이다.  Yaksoo = [1]로 초기화하면서 시작하면 되겠다.
# 2.2 for와 i in range(2, int(math.sqrt(n))+1)을 이용해서 하나씩 숫자를 늘려간다.
# 2.2 작은 수부터 시작을 해서 약수를 구하면 큰 쪽의 수도 자연스럽게 알 수 있다.
#     약수로 가질 수 있는 가장 큰 값은 n의 제곱근(sqrt)이다.
#     따라서 int(math.sqrt(n))+1개의 루프만 돌려도 충분하다.
#     이는 검색해야 하는 숫자가 늘면 늘수록 성능의 차이가 눈에 띄게 나타난다.
#
# 3. 약수의 합을 구해서 원래의 수(n)와 같으면 결과(result)에 추가한다.

def Yaksoo(n):
    import math

    result = [1] # 2.1

    for i in range(2, int(math.sqrt(n))+1):
        if n % i == 0:
            if i not in result:
                result.append(i)
            if int(n/i) not in result:
                result.append(int(n/i))
        else:
            continue
    result.sort()
    return result

N = 100000000

for n in range(1, N+1):
    yaksoo = Yaksoo(n)
    sum_of_yaksoo = sum(yaksoo)
    if  sum_of_yaksoo== n:
        print("%d의 약수는 %s이며, 그 합은 %d입니다. 따라서 %d은 완전수입니다." %(n, yaksoo, sum_of_yaksoo, n))
    else:
        continue

2017/04/16 20:11

J. J. Yang

#풀이1
def pfnum(n):
    perfectnum=[]
    for i in range(1,n):
        if n%i==0:
            perfectnum.append(i)
    return perfectnum

print(pfnum(28))

#풀이2
N=int(input(":"))
perfectnum=[i for i in range(1,N) if N%i==0]
print(perfectnum)

2017/04/18 13:10

조현

파이썬 3입니다

string = ''

num = input("입력된 숫자 이하의 모든 완전수를 출력합니다.")

for i in range(1,1+ int(num)):
    sum =0
    for j in range(1, i):
        if i%j==0:
            sum += j
    if i == sum:
        string += ', ' + str(i)


print(string)

2017/04/19 11:30

고든

import java.util.Scanner;

public class test { 
    public static void main(String[] args) {                
        Scanner input= new Scanner(System.in);
        int num= input.nextInt();
        int array[]= new int[num];
        int sum= 0;     
        int j= 0;

        for(int i=1; i<num; i++){           
            if((num%i) == 0){
                sum += i;
                array[j] = i;
                j++;
            }
        }       

        if(num == sum){
            for(j=0; j<array.length; j++){
                if(array[j] != 0){
                System.out.print(array[j]+" ");
                }
            }
            System.out.println();
            System.out.println(num+"은 완전수임.");
        }else{
            System.out.println("완전수가 아님.");
        }

        input.close();
    }   
}

2017/04/20 13:33

쇼덕

```{.python}

n = int(input("Enter number: "))
sum_num = 0

for number in range(1, n+1):
    for num in range(1,number):
        if number%num == 0:
            sum_num += num
    if number == sum_num:
        print(number)
    sum_num = 0

```

2017/04/21 13:54

빅디펜스

이상하게 다른 답들과 다르게 전 너무 쉽게 나오네요.. 오답은 아닌 것 같아 일단 올려봅니다.

package java_3000;
import java.util.*;

public class ExampleTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);       
        System.out.print("입력 > ");
        int N = scanner.nextInt();
        for(int countNum = 1; countNum <= N; countNum++) {
            int sum = 0;
            for(int value = 1; value < countNum; value++) {
                if(countNum % value == 0) {
                    sum += value;
                }           
            }
            if(sum == countNum) {
                System.out.print(sum +" ");
            }
        }
    }
}

2017/04/26 12:01

SungWook Jung

처음으로 올려봅니다.

#include <stdio.h>
#include <math.h>

int main() {
    int number , add_number = 2 , divisor = 2 , sum = 1;
    printf("숫자를 입력하시오 : ");
    scanf_s("%d", &number);
    while (add_number <= number) {
        while (divisor < sqrt(add_number)) {
            (add_number % divisor == 0) ? (sum = sum + divisor + (add_number / divisor)) : (1);
            divisor++;
        }
        if (sum == add_number) {
            printf("%d ", add_number);
        }
        sum = 1, divisor = 2;
        add_number++;
    }
    return 0;
}

2017/04/30 12:53

흐니

N의 범위에 따라서 난이도가 크게 달라질 수 있는 문제같습니다. 아래 코드는 1만 이하에 대해서는 매우 빠른 시간내에 완료됩니다.

def sumOfDivisors(n):
    s, k, l = 1, 2, n**.5
    while k <= l:
        if n % k is 0:
            s += (k + n // k)
        k += 1
    if k * k == n:
        s -= k
    return s

n = int(input())
for i in range(2, n+1):
    if sumOfDivisors(i) == i:
        print(i)


2017/05/02 09:55

룰루랄라

def get_perfect_num(N):
    rtn = []
    for n in range(2, N+1):
        divCnt = 0
        for i in range(1, n):
            if n % i == 0:
                divCnt += i
        if divCnt == n:
            rtn.append(n)
    return rtn

2017/05/03 08:53

Kim MinSoo

public static void main(String[] args) { // 완전수

int num;

Scanner sc = new Scanner(System.in);
System.out.println("번호를 입력하세요 ");
num = sc.nextInt();

for (int i = 1; i <= num; i++) {
    if(num%i ==0){
        System.out.println(i+",");
    }
}

}

2017/05/04 03:09

Esther Maeng

def cal_perfection(number):
    for i in range(1,number+1):
        print(i)
        if sum(cal_divisor(i)) == i:
            print(i, "is the perfection number! \n")


def cal_divisor(number):
    divisor = []
    for i in range(1, int(number/2)+1):
        remainder = number % i
        if remainder == 0:
            divisor.append(i)
    return divisor

2017/05/04 14:12

Taewon Song

n = int(input("자연수 입력 > ")) result = 0

for i in range(1,n+1):

for j in range(1,i):
    if i%j==0:
        result += j
if result == i:
    print("%d "%(result),end=' ')
result = 0

2017/05/04 18:46

sadjbw

#alert: exclude the value itself!
N = int(input("Enter any number N=? "))
complete_number=[]
for j in range(1,N+1):
    a = j
    s=[]
    for i in range(1,a):     #looking for divisor
        if ( a % i == 0) :
            s.append(i)      
    if( sum(s) == a):        #looking for the complete number
        complete_number.append(a)

print("the complete number less than or same as N is :")        
print(complete_number)  #printing out the complete number

2017/05/04 19:32

Proboscis Kita

num = int(input("숫자를 입력하세요:"))

sum =0 for a in range(2,num): sum=0 for b in range (1,a): if (a/b) == (a//b): # print (a,b) sum=sum+b if a==sum : print("%d is perfect number.\n" %sum)

2017/05/05 01:02

민석인

파이썬으로 해보았습니다

num = int(input("숫자를 입력하세요:"))

sum =0
for a in range(2,num):
    sum=0
    for b in range (1,a):
        if (a/b) == (a//b):
            # print (a,b)
            sum=sum+b
    if a==sum : print("%d is perfect number.\n" %sum)

2017/05/05 01:04

민석인

# -*- coding: utf-8 -*-
"""
Created on Fri May  5 16:00:34 2017

@author: haninhwan
"""

list=[]
number = int(input("Enter a number: "))

for i in range(1,number):
    k=0
    for s in range(1,i):
        if(i%s==0):
            k=k+s

    if(k==i):
        list.append(i)


print(list)


2017/05/05 17:58

한인환

#find divisors of x except itself
def divisors(x):

    divisors_list = []

    for y in range(1,x):

        if x % y == 0:
            divisors_list.append(y)

    return divisors_list

#determine if 'n' is complete number
def cplt_num(n):

    total = 0

    for num in divisors(n):
        total = total + num

    if total == n:
        return True
    else:
        return False

#get input
N = int(input("Please input a number: ", ))

#print complete numbers under n
for n in range(1,N+1):

    if cplt_num(n) == True:
        print (n)

2017/05/05 20:44

정의석


import java.util.Scanner;

public class practice {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        for(int i=2; i<=num; i++){
            int result = 1; 
            for(int j=2; j<i; j++){
                if((i%j)==0){
                    result += j;
                }
            }
            if(result == i){
                System.out.println(i);
            }
        }
    }
}

2017/05/06 08:59

dnjs7292

자바로 최근에 시작하신 분들이 이해하실 수 있게 해보았어요.. 별루 잘한진 모르겟지만 import java.util.Scanner;

public class abcd { public static void main(String args[]){

    Scanner sc = new Scanner(System.in);
    int N = 0;
    System.out.println("Enter N: ");
    N = sc.nextInt();

    int sum = 0;

    for(int i=2; i<N; i=i+1){
        sum = 0;
        for(int j=1; j<i; j=j+1){
            if(i%j==0){
                sum = sum+j;
            }
        }
        if(sum == i){
            System.out.println("Perfect Number is: " + i);
        }
    }
}

}

```

2017/05/07 21:09

정지광

# coding = utf-8

while 1 : # 자연수를 입력받을때까지 무한 루프

    number = int(input("자연수를 입력하세요 : ")) # 자연수를 입력받음

    n=1
    i=0
    result = 0
    n_list = []

    while n < number :      #입력받은 수의 약수를 구함
        if number%n == 0 :      # 나머지가 0인경우
            n_list.append(n)    # 해당 값을 리스트에 추가함
            result += n         # 해당 값을 합산함
        else : ""           # 나머지가 0이 아닌 경우 별도의 작업 없음
        n += 1

    if result == number :   # 약수의 합이 입력값과 같으면, 약수를 출력하고 끝
        print(n_list)
        break
    else :
        print("입력한 수는 자연수가 아닙니다.")


2017/05/07 22:14

최준호

n=int(input("숫자 입력하시오: ")
sum_num=0
for i in range(1,n+1):
    for j in range(1,i):
        if i%j==0:
            sum_num+=i
    if sum_num==i:
        print(i)

2017/05/09 22:09

빅디펜스

def func(a):
    lst=[]
    num=0
    for i in range(1, a):
        if a%i==0:
            num+=i
    lst.append(num)
    return lst

a=int(input("number는?"))
n_lst=[]
for i in range(1, a+1):
    if i==int(func(i)[0]):
        n_lst.append(i)

print(n_lst)

2017/05/10 11:30

정세진

sys.version

3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]

N=int(input("enter the integer: "))

for n in range(2,N+1): divisor=[] for i in range(1,n): if (n%i) ==0: divisor.append(i) #print(n,divisor) if sum(divisor)==n: print("complete numbers",n)

2017/05/11 08:17

SC You

package oiler;

import java.util.Scanner;

public class _1 {
    public static void main(String[] args) {


        Scanner in =new Scanner(System.in);

        System.out.println("숫자를 입력해 주세요");
        int number=in.nextInt();
        while(number>0){
            int count=0;
            for(int i=1; i<number; i++){

                if(number%i==0){
                    count += i;
                }
            }
            if(number==count){
                System.out.println(number);
            }
            number--;
        }
    }
}

2017/05/11 16:18

123123

(C언어로 작성)

#include <stdio.h>  
void main()
{  
    int n, i, j;  
    scanf_s("%d",&n);  
    for (i=1;i<=n;i++)
    {  
        int divisiorSum = 0;  
        for (j=1;j<i;j++)
        {  
            if (i%j==0)  
                divisiorSum+=j;  
        }  
        if (i==divisiorSum)  
            printf("%d ", i);  
    }  
}

2017/05/11 21:54

강동주

num = input()
sum = 0
list = []

for i in range(1,num+1):
    for j in range(1, i):
        if i%j == 0:
            sum += j
    if sum == i:
        list.append(sum)
    sum = 0

print(list)

2017/05/12 00:02

Hyoseop JO

// C++로 작성하였습니다. //

include "stdafx.h"

int Sum_Divisor(int _value)
{
    int result = 0;

    for (int i = 1; i < _value; i++)
    {
        if (_value % i == 0)
        {
            result += i;
        }
    }

    return result;
}

int main()
{
            int input;
        printf_s("Input Base Number : ");
            scanf_s("%d", &input);

    printf_s("Output Perfect Numbers : ");

    for (int i = 1; i <= input; i++)
    {
        int sum = Sum_Divisor(i);
        if (i == sum)
        {
            printf("%d ", sum);
        }
    }
    printf_s("\n");
}

2017/05/12 02:37

HanRim Lee

import time

def perfect(N):

start_time = time.time()
List2 = []
temp = 0
for n in range(N):
    n = n + 1
    if (n % 2) == 0 and n > 2:
        List1 = []
        x = int(n // 2)
        for i in range(x):

            i = i + 1
            temp = n % i

            if (temp == 0) and (i != n) :
                List1.append(i)
                temp = sum(List1)
        if temp == n:
            List2.append(temp)
    elif (n > 3) and not(n % 2 == 0) :
        List1 = []
        for i in range(int(round(n/3))):

            i = i + 1
            temp = n % i

            if (temp == 0) and (i != n) :
                List1.append(i)
        temp = sum(List1)

        if temp == n:
            List2.append(temp)

end_time = time.time()          
return List2, List1, temp, end_time - start_time

def aliquot(n, t) :

List1 = []
temp = 0
x =int(n)
for i in range(x):

    i = i + 1
    print("i=%s" %i)
    temp = ( t*n )% i
    print("temp=%s" %temp)

    if (temp == 0):                            
        List1.append(i)
        print("i=%s" %i)
List1.append(n*t)
print(List1)            
return List1

2017/05/14 01:13

김순효

a = int(input("임의의 자연수 N을 입력하시오: "))

def find(N):            # N 미만의 양의 약수의 집합 구하기
    group = []
    for i in range(1, N-1):
        if N % i == 0:
            group.append(i)
        else: continue
    return group

print("N 이하의 모든 완전수를 구해보겠습니다.")

for underN in range(1, a+1):
    result1 = find(underN)
    sum = 0

    for i in range(len(result1)):
        sum = sum + result1[i]

    if sum == underN:
        print(underN, "은(는) 완전수인 자연수입니다.")

    else: continue

2017/05/14 01:15

박지상

def calc(number):
    value = []

    for i in range(1, number + 1):
        if number % i == 0:
            value.append(i)

    return value

num = 6
print(calc(num))

2017/05/15 15:57

김동민


n = int(input ("자연수를 입력하세요 : "))

c = []

for a in range(1,n+1):
    sum = 0
    if a == 1:
        c.append(1)
    else:
        for b in range(1,a):       
            if a < b:
                pass
            elif a%b == 0:
                sum = sum + b

        if sum == a:
            c.append(sum)
print (c)

2017/05/16 14:53

Bo Hyun Seo

object PerfectNumber
{
  def SearchDivisior(N : Int): IndexedSeq[Int] = (1 to N / 2) filter(x => N % x == 0)
  def main(args: Array[String]): Unit = print((5 to 100000) filter( x => x == SearchDivisior(x).sum))
}

스칼라로 간략하게 짜보았습니다. 숫자가 커질수록 계산 시간이 많이 늘어나네요;

2017/05/21 00:37

S ReolSt

def divisor(n):
    l = []; i = 1
    while i*i <= n:
        if n % i == 0:
            l.append(i)
            l.append(int(n/i))
        i += 1
    l = list(set(l))
    l.remove(n)
    return l

def perfectnumber(n):
    i = 1; l = []
    while i <= n:
        if sum(divisor(i)) == i:
            l.append(i)
        i += 1
    return l
import time
start_time = time.time()
perfectnumber(10000)
elapsed_time = time.time() - start_time
print("\n",elapsed_time)

0.37초 걸리네요

2017/05/21 00:40

겨털에뽀뽀

N = int(input("숫자를 입력하시오:"))
a = 0
answer = []
for x in range(1,N+1):
    sum = 0
    for M in range(1,x):
        if x%M == 0:
            sum = sum + M
        else:
            pass
    if x == sum:
        answer.append(x)

print(answer)

2017/05/21 22:36

김진원

import java.util.Scanner;

class PerfectNumber{
    public static void main(String[] args){
        int N=0;
        int yak=0;
        Scanner sc = new Scanner(System.in);

        System.out.print("Input N : ");

        N = sc.nextInt();

        if(N<6){
            System.out.println("There is no P_number less then " + N);
        }
        else{
            System.out.print("\nP_number of less then " + N + " is ");

            while(N>=6){
                for(int i=N-1;i>0;i--){
                    if(N%i==0){
                        yak += i;
                    }
                }
                if(yak==N){
                    System.out.print(yak);
                    if(yak>6)
                        System.out.print(", ");
                }
                yak=0;
                N--;
            }
        }   
    }
}

2017/05/23 20:54

별비

import java.util.Scanner;

public class Q128 {

    public static void main(String[] args) {

        int question;

        Scanner scan = new Scanner(System.in);

        System.out.println("완전수 구하기");
        question = scan.nextInt();

        System.out.println(question+" 이하의 수 중에서 완전수는 ");

        for (int i = 1; i <= question; i++) {

            pn(i);                  

        }

        System.out.println("입니다.");

    }

    public static void pn(int a) {

        int alisum = 0;     

        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                alisum=alisum+i;
            }                       
        }


        if (a == alisum) {
            System.out.print(a+" ");
        }
    }

}

2017/05/24 09:58

DrKilling


#2017.05.24 完

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) 
{
    int num;
    int i;

    scanf("%d",&num);

    for(i=1;i<=num;i++)
    {
        if( i == cc(i))
        {
            printf("%d \n",i);
        }
    }

    return 0;
}

int cc(int n)
#약수의 합을 계산하는 함수
{
    int i;
    int sum;

    sum = 0;

    for(i = 1; i<n;i++)
    {
        if(n%i == 0)
        {
            sum += i;
        }   
    }

    return sum;
}

2017/05/24 14:35

Jero

// 완전수 구하기 - C#
using System;
using System.Collections;

namespace PerfectNumber
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("숫자를 입력하십시오:");
            string select = Console.ReadLine();
            int num = Convert.ToInt32(select);

            int sum; // 약수들을 모아 완전수임을 확인하는 식.
            Queue list = new Queue(); // 완전수들을 저장하는 큐.

            for (int i = 1; i <= num; i++) 
            {
                sum = 0;
                for (int j = 1; j < i; j++)
                {
                    if (i % j == 0)
                        sum += j;
                }
                if (sum == i)
                    list.Enqueue(i);
            }
            Console.WriteLine("{0} 까지의 수 중 완전수는 다음과 같습니다.", num);
            while(true)
            {
                try
                {
                    Console.WriteLine(list.Dequeue());
                }
                catch
                {
                    break;
                }
            }
        }
    }
}

2017/05/25 13:57

Jeong Hoon Lee

C언어로 작성했습니다.

#include<stdio.h>
int main()
{
    int iN;
    int iPrintcount = 0;

    printf("N수 이하의 모든 완전수를 구합니다. N값을 입력해주세요 : ");
    scanf("%d", &iN);

    for (int iCount = 2; iCount <= iN; iCount++) 
    {
        int iYaksum = 0;
        for (int iYakcheck = 1; iYakcheck < iCount; iYakcheck++) // 자기자신을 제외한 약수합이므로 자신(iCount)은 제외
        {
            if (iCount%iYakcheck == 0)  // iYakcheck이 iCount의 약수이면
            {
                iYaksum += iYakcheck;  // 약수합에 더함 (iCount 자신은 제외됨)
            }

        }
        if (iYaksum == iCount) // 약수합이 iCount와 같으면
        {
            iPrintcount++;
            printf("%d 번째 완전수 : %d\n", iPrintcount, iYaksum); //약수합 출력
        }
    }
    return 0;
}

2017/05/28 12:05

김우주

import java.util.Scanner;

/**
 *  완전수 구하기 
 *  자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다. 
 *  예를 들면, 6과 28은 완전수이다. 6=1+2+3 // 1,2,3은 각각 6의 약수 // 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.
 * */
public class Alogrism_Test1 {

    public static void main(String[] args) {

        int num = 0;

        Scanner scan = new Scanner(System.in);
        System.out.println(" 자연수 입력 ");
        num = scan.nextInt();
        System.out.print(num+" 이하의 완전수는 ? ");
        for(int i=1; i<=num; i++){
            if(isPerfect(i)){
                System.out.print(i+", ");
            }
        }
    }


    public static boolean isPerfect(int num){
        int sum=0;

        for(int i=1; i<=num; i++){
            if(num%i==0 && num!=i){
                sum+=i;
            }
        }if(sum==num){
            return true;
        }
        return false;
    }
}

2017/05/29 21:35

93D

def find_divisor(int_value) :
    dummy = []
    for i in range(1, int_value+1) :
        if int_value % i == 0 :
            dummy.append(i)
    result = dummy
    return dummy

def validation(list_divisor, input_N) :
    if sum(list_divisor[0:(len(list_divisor)-1)]) == input_N :
        return True
    else :
        return False

N = input("input : ")
for i in range(1,int(N)+1) :
    if validation(find_divisor(i),i) :
        print(i)

2017/05/31 17:42

L

# C:\python\perfectnumber.py

N=int(input("자연수 N 입력: "))

sum=0
for n in range(1,N+1):
        for i in range(1,n):
                if n%i == 0:
                        sum += i
        if sum==n:
                print("%d" % n)
        sum=0

2017/05/31 23:52

Donguk Red

c로 풀이.

#include <stdio.h>
int perfect_num(int n);
int main(void)
{
    int i,n;
    printf("숫자 입력 : ");
    scanf("%d",&n);
    for(i=2;i<=n;i++) if (perfect_num(i)==i) printf("%d ",i);
    return 0;
}
int perfect_num(int n)
{
    int i,sum=0;
    for(i=1;i<n;i++) if((n%i)==0) sum+=i;
    return sum;
}

2017/06/01 09:36

박동준

public class ForPerfectNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("정수 입력 : ");
        int n = sc.nextInt();

        for(int i=1;i<=n;i++){ // 1부터 입력받은 수까지

            int s = 0;
            for(int j=1;j<=i/2;j++) // 절반을 넘는 수에는 약수가 없다. 
                if(i%j==0) s += j; // 약수면 더한다.

            if(i==s) System.out.println(i);
        }
        sc.close();
    }
}

2017/06/02 16:56

김중운

C언어로 작성했습니다

include

int main() { unsigned int input; unsigned int i,j; unsigned int temp;

printf("양의 정수를 입력하세요 : ");
scanf("%d", &input);                        //원하는 값 입력받기


printf("완전수는...\n");
for (i = 2; i <= input; i++)                //1부터 원하는 값까지, 1은 해당안됨
{
    temp = 1;                               //1은 모든 수의 약수이므로 포함하고 시작

    for (j = 2; j <= i/2; j++)              //약수 구하기(2부터 input의 반값까지만)
    {
        if ((i % j) == 0)                   //j가 약수라면
        {
            temp += j;                      //약수를 temp에 합산                                      
        }
    }

    if (temp == i) printf("%u\n", i);       //맞으면 출력
}

}

2017/06/05 14:41

DS Lee (kamian)


import java.util.*;

public class Test01 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("입력>> ");
        int input = sc.nextInt();

        for (int i = 1; i <=input; i++) {
            int m =0;
            for (int j = 1; j < i; j++) {
                if ((int) (i % j) == 0) {
                    m += j;
                }
            }
            if(i==m)
                System.out.println(i);
        }

    }

}

2017/06/12 16:50

EunByeol Kim


import java.util.*;

public class Test01 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("입력>> ");
        int input = sc.nextInt();

        for (int i = 1; i <=input; i++) {
            int m =0;
            for (int j = 1; j < i; j++) {
                if ((int) (i % j) == 0) {
                    m += j;
                }
            }
            if(i==m)
                System.out.println(i);
        }

    }

}

2017/06/12 16:50

EunByeol Kim

let hab = 0;
let arr = [];

let su = (num) => {
    for(let i = 1; i <= num; i++){
        for(let j = 1; j <= i/2; j++){
            if(i%j==0){
                hab+=j;    
            }
        }
        if(hab==i){
            arr.push(i);
        }
        hab = 0;
    }
    return arr;
}

console.log(su(30));

2017/06/13 22:18

redshark

java

import java.util.ArrayList;
import java.util.Scanner;

public class perfectNumber {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("자연수를 입력하세요. 입력하신 수 이하의 완전수를 모두 출력해드립니다.");

        int n=0;
        n=scan.nextInt();

        int sum=0;      
        for(int i=1; i<=n; i++){
            for(int j=1; j<i; j++){
                if(i%j==0){
                    sum+=j;}//if
            }//for j
            if(i==sum){//완전수라면 출력
                System.out.println("완전수 : "+sum);
            }//if
            sum=0;
        }
    }
}

2017/06/16 20:01

강혜지

javascript(ES6)

// 배열의 총 합을 반환
Array.prototype.sum = function() {
    return this.reduce((a, b) => a + b, 0);
};

// 완전수 판별
Number.prototype.isPerfect = function() {
    return this.valueOf() === this.getDivisors().sum();
};

// [1, n/2]까지의 약수 배열을 반환
Number.prototype.getDivisors = function() {
    // 완전수는 자기 자신을 제외한 약수의 합이므로
    // [1, n] 배열이 아닌 [1, n/2] 배열로 검사해도 된다.
    return getSeries(Math.floor(this / 2)).filter(v => v.canDivide(this));
};

// 약수 판별
Number.prototype.canDivide = function(n) {
    return n % this === 0;
};

// [1, n] 배열을 만들어준다
var getSeries = function(n) {
    return Array.from(Array(n), (_, i) => i + 1);
}

// [1, n] 사이의 완전수들을 배열로 반환
var getPerfectNumbers = function(n) {
    return getSeries(n).filter(v => v.isPerfect());
};


console.log(getPerfectNumbers(6).join(" "));
console.log(getPerfectNumbers(30).join(" "));
console.log(getPerfectNumbers(500).join(" "));

2017/06/16 23:02

funnystyle

#include <iostream>
using namespace std;

bool isCompleteNum(int n)
{
    int sum = 0;

    for (int i = 1; i < n; i++) {
            if (n % i == 0)
                sum += i;
    }

    return sum == n ? true : false; 
}

int main()
{
    int max = 0;
    cin >> max;

    for (int i = 1; i <= max; i++)
    {
        if ( isCompleteNum(i) )
        {
            std::cout << "complet number : " << i << std::endl;
        }
    }
    return 0;
}

2017/06/29 14:59

Logan

def is_complete_num(num):
    sum = 0
    for i in range(1, num):
        if num % i == 0:
            sum += i
    if sum == num:
        return True
    else:
        return False

def prt_all_complete_num(num):
    for i in range(1, num + 1):
        if (is_complete_num(i)):
            print(i)

num = int(input("input number: "))
prt_all_complete_num(num)

2017/06/30 21:43

이정환

n = int(input("자연수:"))
print("n 이하의 모든 완전수:")

for i in range(1, n+1):
    factors = [x for x in range(1,i) if i % x == 0]
    if sum(factors) == i:
        print(i)

2017/07/03 13:46

Noname

public class Ex008 {
    static int targetNum;

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //입력
        getInputData();

        //계산 및 출력
        calcPerfnum(targetNum);
    }

    static private void calcPerfnum(int targetNum) {
        for(int i = 1; i <= targetNum; i++) {
            int sumOfdiv = 0;
            for(int temp = 1; temp < i; temp++) {
                if(i%temp == 0)
                    sumOfdiv += temp;
                if(sumOfdiv > i)
                    break;
            }
            if(sumOfdiv == i)
                System.out.println("완전수: " + i);
        }
    }

    static private void getInputData() {
        Scanner scan = new Scanner(System.in);
        do {
            System.out.print("입력: ");
            targetNum = scan.nextInt();
        }while(targetNum < 1);
    }
}

입력: 1000

완전수: 6

완전수: 28

완전수: 496

2017/07/04 14:04

pg

Python으로 푼 Brute-force 코드입니다.

def solve(n):
    def is_complete(num):
        return num == sum(x for x in range(1, int(num / 2 + 1)) if num % x is 0)

    print([x for x in range(1, n + 1) if is_complete(x)])

2017/07/05 12:55

SOUP

def Perfect_Number(N):

    ans = []

    for i in range(1,N+1):
        lst =[]
        if i == 1:
            continue

        for j in range(1,i/2+1):

            for k in range(1,i+1):
                if j*k == i:
                    lst.append(j)

        if sum(lst) == i:
            ans.append(i)

    return ans

print Perfect_Number(100)

2017/07/05 17:35

강동인

class Program
    {
        static bool isCompleteNum(int n)
        {
            int sum = 0;
            for( int i = 1; i < n ; i++ )
            {
                if( n % i == 0 && i != n )
                    sum += i;
            }
            return sum == n;
        }
        static void Main(string[] args)
        {
            int input = 0;
            int.TryParse(Console.ReadLine(), out input);

            for(int i = 1; i < input; i++)
            {
                if(isCompleteNum(i))
                    Console.WriteLine("{0}", i);
            }
        }
    }

2017/07/13 00:18

deicide

def perfectNumber(n):
    perfect = []

    for i in range(2,n+1):
        sum = 0
        for k in range(1,i-1):
            if(i%k==0):
                sum+=k
        if(sum==i):
            perfect.append(i)
    return perfect

print(perfectNumber(28))

2017/07/13 17:02

김도현

input_int = input('자연수를 입력하세요 : ')

for i in range(1,input_int+1):
    data = []
    for j in range(1,i):
        if i % j == 0:
            data.append(j)
            if sum(data) == i:
                print str(i)+'의 약수는 '+str(data)+'이고 '+str(i)+'는  완전수 입니다.'

2017/07/13 22:54

이경민

package java_tutorial;

import java.util.Scanner;

public class PerfectNum {

    public static void main(String[] args) {
        int sum = 0;
        int count = 1;

        Scanner sc = new Scanner(System.in);

        System.out.print("몇 까지의 완전수를 구하시겠습니까? : ");
        int perNum = sc.nextInt();

        for(int i = 1; i < perNum; i++)
        {
                for(int j = 1; j < i; j++)
                {
                        if(i%j==0)
                        {
                                sum += j;
                        }
                }

                if(sum==i)
                {
                    System.out.println(count + "번째 완전수는 " + i + "입니다.");
                    count ++;
                }

                sum = 0;
        }

        sc.close();
    }

}

2017/07/17 14:27

최원석

#include<stdio.h>

void PrintPerNum(int N);

int main(void)
{
    int N;
    printf("Insert N :");
    scanf("%d", &N);
    PrintPerNum(N);
    return 0;
}

void PrintPerNum(int N)
{
    int j;
    int i;
    for (j=1; j<=N; j++)
    {
        int total = 0;
        for (i = 1; i < j; i++)
        {
            if (j%i == 0)
                total += i;
        }
        if (j == total)
            printf("%d\n", j);
    }
}

2017/07/20 13:07

MAKESOME

while True:
    number = int(input("input : "))
    print([n for n in range(1,number+1) if sum(a for a in range(1, n) if n % a == 0) == n])

2017/07/22 15:35

이재희

public class Ex8 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();

        for ( int i = 2; i <= number; i++ ){
            int sum = 0;
            for ( int j = 1; j < i; j++ ){
                if ( i % j == 0 ){
                    sum += j;
                }
            }
            if ( sum == i ){
                System.out.println(sum);
            }
        }
        sc.close();
    }
}

2017/07/24 10:54

요지

public class FerFectN {

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int a= sc.nextInt();

    int sum = 0;
    for(int i=1; i < a;i++){
        //System.out.println(i);

        if(a%i==0){
            System.out.print(i + " ");

            sum += i;
        }
    }
    System.out.println();
    System.out.println("완전수 합 : " + sum);

}

}

2017/07/28 13:40

심성보

import java.util.*;

public class PerfectNumber {
    public static boolean discriminant(int n) {
        int sum=-n;
        for(int i=1; i*i<=n; i++) {
            if(n%i==0) {
                sum += i;
                if(n/i != i) sum += (n/i);
            }
        }
        if(sum==n) return true;
        else return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt(); 
        for(int i=1; i<=input; i++)
        {
            if(discriminant(i))
                System.out.println(i);
        }
    }
}

2017/07/29 10:41

곽철이


def my_function(x):
    result = list()
    for j in range(1,x+1):
        li = list()
        for i in range(1,j):
            if j%i==0:
                li.append(i)
        if sum(li) == j:
            result.append(j)
    return(result)

2017/07/30 17:33

이다경

$input_Number = 10000;

for($j =1; $j <= $input_Number; $j++){
    $input_value = $j;

    $remainder = array();
    $remainder_sum = 0;
    for($i=1; $i <= $input_value; $i++){

        if($input_value % $i == 0){
            $remainder[] = $i;
            $remainder_sum  = $i == $input_value ? $remainder_sum :$remainder_sum + $i;
        }
    }

    if($remainder_sum == $input_value){
        echo "완전 수 : ".$input_value."</br>";
    }


}

2017/07/30 23:01

돋술이

def getPrime(N):

    list_data=[]
    for i in range(1,N+1):
        sum=0
        for j in range(1,i):
            if i%j==0:
                sum+=j
        if i==sum:
            list_data.append(i)
    print(list_data)

print('이 프로그램은 입력으로 자연수 N을 받고, 출력으로 N이하의 모든 완전수를 출력하는 프로그램입니다.')
N=input('자연수 N을 입력하세요:')
getPrime(int(N))

2017/07/31 01:21

Jung Daehyun

일단 N을 입력받으면 1부터 N-1까지의 수들을 차례대로 그 수들을 제외한 약수들을 모두 더해서 완전수의 유무를 알아보면 됩니다.

2017/08/02 13:09

P.Y.Thon

def CN(N):
    cn_list = []
    for a in range(1,N):
        sum = 0
        for i in range(1,a):
            if a%i == 0:
                sum += i
        if sum == a:
            cn_list.append(a)
    print(cn_list)

2017/08/04 14:50

이현우

C

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
    if(argc != 2)
    {
        printf("no argc 2 !!!!\n");
        return 0;
    }
    int tmp = atoi(argv[1]);
    int arr[16];
    for(int i=0;i<16;i++)
        arr[i] = 0;
    int count =0;
    int result =0;
    for(int i=1;i<tmp;i++)
    {
        if(tmp%i==0)
        {
            arr[count] = i;
            count++;    
        }
    }

    for(int i=0;i<count;i++)
        result = result + arr[i];
    if(result == tmp)
        printf("wan jeon soo");
    else
        printf("no wan jeon soo");




    return 0;
}   

2017/08/08 17:58

임꺽정

public static boolean getSumOfDivisor(int num) {
        boolean divFlag = false; //완전수인지 확인
        int sum = 1; // 약수들의 합 

        for(int i=2; i<=num/2; i++) {
            // 나머지가 0이면 약수
            if(num%i==0) {
                sum += i;
            }
        }

        // 완전수 확인
        if(sum == num) {
            divFlag = true;
        }

        return divFlag;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int inputNum = sc.nextInt();

        List<Integer> list = new ArrayList<Integer>();
        for(int i=2; i<=inputNum; i++) {
            if(getSumOfDivisor(i)) {
                list.add(i);
            }
        }

        sc.close();

        System.out.println(list);
    }

2017/08/09 15:15

jaehun song

package com.test;

public class perfectNumber {

    public static void main(String args[]) {

        findPerfectNumber(10000);
    }

    public static void findPerfectNumber(int max) {

        for ( int i=2; i<=max; i++ ) {

            int sum=1;

            for (int j=2; j <= i / 2; j++ ) {

                if ( 0 == i % j ) {                 
                    sum += j;
                }

                if ( sum > i )
                    break;
            }

            if ( sum == i )
                System.out.println("pefect Num : " + i );
        }       
    }       
}

2017/08/14 17:53

wonjae.lee

divisor = []
PerfectN = []
N = int(input("N값을 입력하세요: "))
sum = 0
for i in range(1,N + 1):
    for j in range(1, i):
        if(i % j) == 0:
            divisor.append(j)
    for list in range(len(divisor)):
        sum += divisor[list]
    if sum == i:
        PerfectN.append(sum)
    sum = 0
    divisor = []
print("완전수들 "+ str(PerfectN))

2017/08/20 21:34

윤건석 (can9165)

def findNum(N):
    result=[]
    for n in range(1,N):
        temp=[]
        for i in range(1,n):
            if n%i==0:
                temp.append(i)    

        if sum(temp)==n:
            result.append(n)
    print(result)

findNum(1000)

2017/08/20 23:48

iamm00n

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());

        for (int i=1; i<=num; i++) {    // N 이하의 모든 완전수 출력
            int sum = 0;
            for (int j=1; j<i; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (sum == i) {
                System.out.print(i + " ");
            }
        }
        br.close();
    }
}

2017/08/22 14:35

임주성


    public static void main(String[] args) {
        int input = new Scanner(System.in).nextInt();

        while(--input!=0) {
            int sum=0;
            for(int i=1;i<input;i++) if(input%i==0) sum+=i;
            if(input==sum) System.out.println(input);
        }
    }

제 한계입니당 ㅠㅠ

2017/08/23 14:31

장동규

def f(n1):
    for i in range(1, n1+1):
        cnt = int(i/2)
        arr = []
        while cnt >= 1:
            if i % cnt == 0:
                arr.append(cnt)
            cnt -= 1
        if i == sum(arr):
            print(i, arr)

f(30)

2017/08/25 16:12

piko

JAVA

    public static void main(String[] args) {

        //6, 28, 496, 8128
        int sum = 0;
        int n = 500;
        ArrayList<Integer> list = new ArrayList<Integer>();

        for(int i = 1; i <= n; i++) {
            for(int j = 1; j < i; j++) {
                System.out.println(j);
                if(i % j == 0) {
                    sum += j;
                }
            }

            if(sum == i) {
                list.add(i);
            }

            sum = 0;
        }

        System.out.println("완전수: " + list);

    }

2017/08/25 16:58

androot

def nature_num(N):

 B=[]

 for i in range( 2 , N+1):
        a = 0
        print('i =', i)
        for k in range ( 1,i ):
            print('k=',k)

            if ( i % k ) == 0 :
                a = a + k
                print('a=', a)
        if a == i :
            B.append(a)
 print(B)
 return(B)


nature_num(28)

2017/08/29 16:01

ideall

public class Test {

    public static void main(String[] args) {    
        Test test = new Test();

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        for (int i = 1; i < N; i++) {
            if (test.divisorSum(i))
                System.out.print(i + " ");
        }

    }

    private boolean divisorSum(int num) {
        int sum = 0;

        for (int i = 1; i < num; i++) {
            if (num % i == 0)
                sum += i;
        }

        return (sum == num) ? true : false;
    }
}

2017/08/29 17:20

흑돼지

# python 3.6
n = int(input())
#   : 완전수 리스트 =           : x가 약수의 합과 같을 경우        : 약수
b = [x for x in range(1, n + 1) if x == sum(i for i in range(1, x) if x % i == 0)]
print(b)
# ans for 10000: [6, 28, 496, 8128]

2017/09/05 13:58

mohenjo

namespace _20170916
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            int z = Convert.ToInt32(s);
            for (int a = 1; a < z; a++)
            {
                int sum = 0;
                for (int i = 1; i < a; i++)
                {
                    int b = a % i;
                    if (b == 0)
                    {
                        sum += i;

                    }
                }
                if (sum == a)
                {
                    Console.WriteLine(a);
                }
            }
        }
    }
}

2017/09/16 12:52

정주영

include

include

int perfect_num(int n) { int i, sum = 1; for (i = 2; i <= (int)sqrt(n); i++) { if ((n%i == 0) && (n/i != i)) sum += (i+n/i); else if ((n%i == 0) && (n/i == i)) sum += i; else continue; } if (sum == n) return 1; else return 0; }

int main() { int i, n; scanf("%d", &n); for (i = 2; i <= n; i++) { if (perfect_num(i) == 1) printf("%d\n", i); } return 0; }

2017/09/18 17:35

홍진욱

#include <iostream>

using namespace std;

int main()
{
    int num;
    int sum=0;
    cin >> num;
    for (int i=1; i <= num; i++)
    {
        for (int j = 1; j <= i / 2 + 1; j++)
        {
            if (i%j == 0)
            {
                sum += j;
            }
        }
        if (sum == i)
        {
            cout << sum << endl;
        }
        sum = 0;
    }
}

2017/09/19 17:09

노명환

    public static void main(String[] args) {

        List<Integer> list2 = new ArrayList<Integer>();
        Scanner scan = new Scanner(System.in);

        System.out.println("자연수 a입력:");
        int a=scan.nextInt();

        for(int i=1;i<=a;i++){
            Isperfect(i, list2);
        }
        for(int tmp : list2) System.out.println(tmp);
    }

    //완전수인지 판단해 완전수면 배열에 담는다.
    public static void Isperfect(int a,List<Integer> list2){
        int sum=0;

        List<Integer> list = new ArrayList<Integer>();
        //완전수 구하는 로직
        for(int i=1;i<a;i++){
            if(a%i==0){
                list.add(i);
            }
        }
        for(int tmp: list){
            sum +=tmp;
        }
        if(a == sum){
            list2.add(a);
        }
    }//완전수 구하는 함수 

2017/09/26 14:10

김문수

자바 입니다.```{.java} public class ploblem { public static void main(String[] args) {

    List<Integer> list2 = new ArrayList<Integer>();
    Scanner scan = new Scanner(System.in);

    System.out.println("자연수 a입력:");
    int a=scan.nextInt();

    for(int i=1;i<=a;i++){
        Isperfect(i, list2);
    }
    for(int tmp : list2) System.out.println(tmp);
}

//완전수인지 판단해 완전수면 배열에 담는다.
public static void Isperfect(int a,List<Integer> list2){
    int sum=0;

    List<Integer> list = new ArrayList<Integer>();
    //완전수 구하는 로직
    for(int i=1;i<a;i++){
        if(a%i==0){
            list.add(i);
        }
    }
    for(int tmp: list){
        sum +=tmp;
    }
    if(a == sum){
        list2.add(a);
    }
}//완전수 구하는 함수

} ```

2017/09/27 10:01

김문수

자바입니다, 깔끔하게 안나오네요

private static ArrayList<Integer> num(int a) {
        ArrayList arr = new ArrayList<>();

        for (int i = 1; i < a; i++) {
            if (a % i == 0) {
                arr.add(i);
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("수를 입력하세요: ");
        int num = sc.nextInt();
        int sum = 0;

        for (int i = 0; i < num(num).size(); i++) {
            sum += num(num).get(i);
        }
        if (sum == num) {
            System.out.println(sum + "은 완전수");
        } else {
            System.out.println(sum + "은 완전수가 아니네");
        }
    }

2017/09/30 16:56

coogy

def perfetn(N):
    R=[]
    for i in range(1,N+1):
        K=[]
        for j in range(1,i):
            if i%j==0:
                K.append(j)
        if sum(K)==i:
            R.append(i)
    print(R)        

2017/11/01 19:54

강상욱

    public static String perpectNum(int n) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for (int i = 1; i <= n; i++) {
            int test = 0;
            for (int j = 1; j < i; j++) {
                if (i % j == 0) {
                    test += j;
                }
            }
            if (test == i) {
                list.add(i);
            }
        }
        return list.toString();
    }

2017/11/09 15:29

kim

print([num for num in range(2, int(input('input number: '))+1) if sum([i for i in range(1, num) if not num%i]) == num])

2017/11/10 12:20

songci

import java.io.IOException;
import java.util.Scanner;

//예외 처리를 위한 클래스를 만든다.
@SuppressWarnings("serial")
class MyExceptionClass extends Exception{
    String message;
    Throwable cause;
    public MyExceptionClass(String message, Throwable cause) {
        //super()메소드는 제일 위에 있어야 한다.
        super(message, cause);
        this.message = message;
        this.cause = cause;
    }
    //출력을 위해 Throwable인터페이스의 printStackTrace메소드를 오버라이딩한다.
    @Override
    public void printStackTrace() {
        System.out.println(message + "발생 : " + cause);
    }
}

public class PerfectNum {
    //완전수인지 확인한다
     private static boolean check(int num){
            int sum=0;
            for(int i=1; i<=num; i++){
                //자기자신은 해당되지 않기 때문에 제외한다
                if(num%i == 0 && num!=i){
                    sum += i;
                }
            }
            if(sum == num){
                return true;
            }else{
                return false;
            }
        }

    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = 0;

        System.out.print("자연수 = ");
        try {
            //try-catch-finally문을 실행시키기 위해 파싱한다.
            num = Integer.parseInt(in.nextLine());

            if(num<=0) {
                //음수이면 IOException을 throw한다.
                IOException ex = new IOException();
                throw ex;
            }
        }catch(Exception ex) {
            MyExceptionClass exc = new MyExceptionClass("에러", ex);
            exc.printStackTrace();
            System.exit(-1);
        }

        for(int i=1; i<=num; i++){
            if(check(i)){
                System.out.println(i);
            }
        }
        in.close();
    }
}

2017/11/10 21:26

YEAHx4

예외처리클래스를 만들어서 코드가 많이 길어 보입니다. 예외처리 클래스를 만들지 않아도 되지만 throws로 출력되는 것보다는 이렇게 예외처리클래스를 만들어서 출력하는 것이 깔끔하게 출력되기 때문에 예외처리클래스를 사용했습니다. 예외처리클래스 없이도 throws로 작성이 가능합니다 - YEAHx4, 2017/11/10 21:29

python 2.7

from collections import defaultdict


def perfect_number(x):
    numb_sample = range(1, x+1)
    div_no = defaultdict(list)

    for i in numb_sample:
        w = numb_sample.index(i)   
        for j in numb_sample[:w]:          # 자신을 제외한 수로 나누어 봅니다.
            if i % j == 0:
                div_no[i].append(j)

        sum_div_no = 0
        for k in range(len(div_no[i])):    # 약수를 합하여 자신의 수와 맞는지 검사합니다.
            sum_div_no += div_no[i][k]

        if i <> sum_div_no:
            del div_no[i]

    return div_no

print (perfect_number(10))
print (perfect_number(30))
print (perfect_number(1000))

2017/11/22 19:43

vkospi

python

def perfectN(N):
    for i in range(1, N+1):
        if i == sum([x for  x in range(1, i) if i % x == 0 ]):
            print(i, end = ' ')

perfectN(1000)

2017/11/25 22:41

이택성

N = int(input("자연수를 입력하세요 :"))

def divisor(N) :
    tot = 0
    for i in range(1, N+1) :
        if N % i == 0 :
            tot += i
    return tot

def perfect_number(N) :
    n = []
    for i in range(1, N+1) :
        if divisor(i) - i == i :
            n.append(i)
    return n

print(perfect_number(N))

2017/11/29 18:22

a = []

N = input()
for n in range(2, N):
    n_l = [1]
    for i in range(2, n/2+1):
        if n%i == 0:
            n_l.append(i)

    if sum(n_l) == n:
        a.append(n)
print a

2017/12/01 19:22

탐나

def comple(n):
    result=[]
    for i in range(2, int(n)+1):
        tmp=int(i)
        tmpp=[1]
        for p in range(2, tmp//2+1):
            if not tmp%p: tmpp.append(p)
        if sum(tmpp)==i:
            result.append(i)
    return(result)

num='0'
while not num.isdigit() or int(num)<1:
    num=(input('1 이상의 자연수: '))

print(comple(num))

2017/12/13 04:18

빗나감

Common Lisp

(defun foo (num)
  (flet ((f (n)
           (loop for i from 1 below n
                 when (= 0 (mod n i))
                 sum i)))
    (loop for i from 1 to num
          when (= i (f i))
          collect i)))
>(foo 10000)
>(6 28 496 8128)

2017/12/14 12:54

리스프

파이썬 3.6

# 입력받은 자연수의 약수의 합을 구하여 리턴하는 함수 정의
def divisortotal(x):
    ans = 0
    divisor = []
    total = 0
    for i in range(1,x+1):
        if x % i == 0:
            ans = x / i
            divisor.append(int(i))
            divisor.append(int(ans))
    divisor = list(set(divisor))
    divisor.remove(x)
    for i in range(len(divisor)):
        total += divisor[i]
    return total

# 1부터 입력받은 자연수까지의 범위 내에서 약수의 합과 같은 자연수(완전수)를 찾아 리스트로 출력
def perfectnum(x):
    perfectnumlist = []
    for i in range(1,x+1):
        if divisortotal(i) == i:
            perfectnumlist.append(i)
    print("\n",">>> 1 ~ %d 사이의 완전수 :"% x,perfectnumlist)    

x = input(" ▶ 자연수를 입력하세요 : ")

if x.isdigit() and int(x) > 0:
    perfectnum(int(x))
else:
    print("\n"," ※ 자연수를 입력해주세요.","\n")

*결과값

 ▶ 자연수를 입력하세요 : 10000

 >>> 1 ~ 10000 사이의 완전수 : [6, 28, 496, 8128]

2017/12/28 15:58

justbegin

파이썬 입니다.

def com(num):        ##자연수 n을 입력받음
    for j in range(num):
        c=0             ##약수들의 합 결과를 저장, a 가 변할 때 마다 새롭게 하기 위해 for문 밑에 저장
        a=num-j           ##역순으로 돈다. num,num-1,num-2,num-3
        for i in range(1,a):           ## num의 약수들이 뭐뭐 있는지 검사
            if a %i ==0:           ##i가 num의 약수 라면 
                c=c+i             ## 약수를들 모두 더한다
        if a==c:         ##약수들의 합이 자기 자신과 같다면
            print ('%d은 완전수'%a)
            continue
com(1293)

2018/01/02 17:38

Ilhoon Kang

자바요 ㅎㅎ

    public static void main(String[] args)
    {
        System.out.println("N이하의 완전수를 확인하고 하는 최대값입력: ");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        main m = new main();
        m.showPerfectNum(num);
    }

    public void showPerfectNum(int MAX)
    {
        int sum = 0;
        for(int i = 1; i <= MAX; i++)
        {
            for(int j = 1; j < i; j++)
            {
                if(i%j == 0)
                {
                    sum += j;
                }
            }
            if(sum == i)
            {
                System.out.println(i);
            }
            sum = 0;
        }
    }

2018/01/08 10:26

강승규

lst_perfect_num = []
N = int(input("자연수를 입력하세요 : "))

for num in range(1, N + 1):
    if sum([x for x in range(1, num) if num % x == 0]) == num: # 양의 약수(자신제외)들의 합이 자신과 같은가?
        lst_perfect_num.append(num)

print("{} 이하의 모든 완전수 : ".format(N))
print(lst_perfect_num)

2018/01/16 01:14

요한

def divisor(n):
    psum = []
    for i in range(1,int(n)):
        if n%i==0:
            psum.append(i)
    return sum(psum)

N = input()
s1 = [x for x in range(1,1 + int(N))]
s2 = []
for i in s1:
    if divisor(i) == i:
        s2.append(i)
print(s2)

올리기 부끄러운 코드입니다만..ㅎㅎ

2018/01/19 14:05

715

python 3.6.3

#첫번째 풀이
def pfNum():
    f_n=int(input("Enter the final number: "))
    c=1
    List=[]
    while c<=f_n:
        Sum=0
        for i in range(1,c+1):
            if c%i==0:
                Sum+=i
        if (Sum-c)==c:
            List.append(c)
        c+=1
    print(List)
pfNum()

#두번째 풀이
num= int(input("숫자를 입력하시오 : "))
print([x for x in range(1, num+1) if x==sum(y for y in range(1, x) if x%y==0)])

2018/01/26 16:26

김도현

n = int(input("범위 : "))
def perfect(number):
    a = number
    result = []
    for i in range(1,a):
        divsum = 0
        for j in range(1,i):
            if i%j == 0:
                divsum += j
        if divsum == i:
            result.append(i)
    return result
print(perfect(n))

2018/02/04 11:50

김동하

import java.util.*;

public class Main { public static void main(String[] args) { Scanner scanf=new Scanner(System.in); int a=scanf.nextInt(); int sum=0; for(int i=1; i<=a; i++) { if(a%i==0 && i!=a) { sum=sum+i; } } if(a==sum) { System.out.println(a+"는 완전수 입니다."); } else { System.out.println(a+"는 완전수가 아닙니다."); }

}

}```{.java}

```

2018/02/07 16:23

즈스크

dic={}
N=int(input('N:'))
for x in range(1,N+1):
    dic[x]=[1]
    for y in range(2,x):
        if x%y==0:dic[x]+=[y]
    if sum(dic[x])!=x:del dic[x]
print(dic.keys())

2018/02/08 22:17

추천은 다 읽음

#include <stdio.h> 
#include <string.h> 
int main(){
   int k=1, sum=0, N;  // 입력값 
   int i;
   scanf("%d",&N); 
   // 1 ~ N까지 확인 
   while(k<N){ 
      sum=0;
      for(i=1; i<k; i++){
         if(k%i == 0) // k를 i로 나누었을때의 나머지가 0이면 약수
            sum += i;  //약수일때 sum에 해당 값을 추가.
      }
      if(sum==k) 
         printf("%d ",k);
      k++; // 다음 수 확인
   } 
} 

2018/02/13 16:02

gudrhrehd123

def perf_num():
    list=[]
    n=input('number:')
    for i in range(1,n+1):
        for j in range(1,i):
            if i%j==0:
                list.append(j)
        if sum(list)==i:
            print i
        list=[]

2018/02/14 15:09

Da ne

def Perfect_num(n):
    divisor_list=[]
    for k in range(1,round(n**0.5)+1):
        if n%k==0:
            divisor_list.append(k)
            if round(n/k) not in divisor_list:
                divisor_list.append(round(n/k))

    if (sum(divisor_list)-n)==n:
        return n


Natural_num=int(input("자연수 N을 입력하세요\n"))

for k in range(6,Natural_num+1):
    if Perfect_num(k)==None:
        continue
    print(Perfect_num(k))




2018/02/16 22:48

D B

def print_perfect(N):
    perfect_numbers = []
    for i in range(1,N+1):
        i_sum = 0
        for j in range(1,i):
            if i%j == 0:
                i_sum += j
        if i == i_sum:
            perfect_numbers.append(i)
    print(perfect_numbers)

2018/02/22 20:26

맹재환

using System;

namespace CSharp_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            int sum;

            for (int i = 2; i <= N; i++)
            {
                sum = 0;

                for (int j = 1; j < i; j++)
                {
                    if (i % j == 0) //약수
                    {
                        sum += j;
                    }
                }
                if(i == sum)
                {
                    Console.Write("{0} ", sum);
                }
            }
        }
    }
}

2018/02/23 16:53

와디더

public class calculation {

    int maxNumber;
    List<Integer> list = new ArrayList<Integer>();
    int result;

    public calculation(int maxNumber) {
        this.maxNumber = maxNumber;
    }

    public boolean searchNumber() {
        for(int i = 1; i <= maxNumber; i++) {
            List<Integer> list2 = new ArrayList<Integer>();
            for(int j = 1; j < i; j++) {
                if((i % j) == 0) {
                    list2.add(j);
                }
            }
            int sum = 0;
            for(int j = 0; j < list2.size(); j++) {
                sum += list2.get(j);
            }
            if(i == sum) {
                list.add(i);
                System.out.println();
            }
        }
        return true;
    }

    public int sumNumber() {
        for(int i = 0; i < list.size(); i++) {
            result += list.get(i);
        }
        return result;
    }

}

2018/02/23 17:43

초초보

getdiv :: Integer -> [Integer]
getdiv n1 = [x|x<-[1..n1-1],n1 `mod` x == 0]
sumdiv x = sum$getdiv x
result :: Integer -> [Integer]
result y = [x|x<-[1..y],x==sumdiv x]
main=do
 putStrLn "Enter Integer"
 input <- getLine
 let n = (read input :: Integer)
 putStr.show$result n

2018/03/04 03:30

Janico

def perfact_number(N):
    p_num = []
    for number in range(1, N + 1):
        divisor = []
        for small in range(1, number):
            if number%small == 0:
                divisor.append(small)
        if sum(divisor) == number:
            p_num.append(number)
    return p_num

Python 3 가장 단순하게 짜봤는데 N이 커질수록 실행시간이 기하급수적으로 늘어난다는 단점이...

2018/03/11 21:05

myyh2357

def perfect_number():
    pass
    numbers = int(input('number : '))

    for x in range(1, numbers+1):
        sum = 0

        for y in range(1, x):
            if 0 == x % y:
                sum += y

        if x == sum:
            print(x, end = " ")

def main():
    pass
    perfect_number()

2018/03/14 21:30

이승훈

python3

import math

def is_perfect(n):
    tot = 0
    for i in range(1, int(math.sqrt(n)) + 1):
        if (n % i == 0):
            tot += i
            tot += n // i

    return n == tot - n

N = int(input())
print([x for x in range(1, N + 1) if is_perfect(x)])

2018/03/17 12:25

디디

a = int(input())
for i in range(1,a+1):
    b = 0
    for j in range(1,i//2+1):
        if i%j == 0:
            b += j
    if b == i:
        print(i)
exit() # 입력값이 커지면 너무 느린데 어카죠..

2018/03/18 00:09

python

Swift입니다.

import Foundation

func isPerfectNumber(_ number: Int) -> Bool {
    var sum = 0
    for i in 1..<number {
        sum += (number % i == 0 ? i : 0)
    }
    return (sum == number) ? true : false
}
print("Enter target number: ", terminator: " ")
if let targetNumberString = readLine() {
    if let targetNumber = Int(targetNumberString) {
        for i in 1...Int(targetNumber) {
            if isPerfectNumber(i) == true {
                print(i)
            }
        }
    }
}

2018/03/21 06:15

졸린하마

import java.util.Scanner;

public class Nums{
 public static void main(String[] args){
  int i,j;
  Scanner sc = new Scanner(System.in);
  System.out.println("자연수를 입력하세요.");
  int input = sc.nextInt();

  System.out.print(input + " 이하의 완전수는");

  if(input<6)
   System.out.print(" 없습니다.");
  else{

   for(i=0;i<input;i++){
    int Sum1 = 0;

    for(j=0;j<i;j++){
     if((i+1)%(j+1) == 0)
      Sum1 += (j+1);
     else;
    }

   if(Sum1 == (i+1))
    System.out.print(" " + (i+1));
   else;

   }

   System.out.println("입니다.");
  }
 }
}

2018/03/22 20:54

배혜민

샌각보다 너무 오래걸리는 것 같아 다시 만들어보니까 속도에서 차이가 나네요.

n,div,z,x = int(input("수를 입력하세요")),[1],0,2
#약수 구하기
while n > x:
       if n%x == 0:
              div.append(x)
       x += 1
# 완전수 구하기
for x in div:
       z += x
if z == n :
       print("%d 는(은) 완전수 입니다" %(n))
else :
       print("%d 는(은) 완전수가 아닙니다" %(n))

2018/03/25 20:54

김영성

def perfect(num) :
    cnt = 0
    mylist = []
    for i in range(1,num+1) :
        if i == sum(j for j in range(1, i) if i % j == 0): mylist.append(i)
    return mylist


print(perfect(1000))

2018/03/27 16:59

yijeong

#숫자 입력은 생략하였습니다.
r = 3000

def chk(input):
    self = 0
    for n in range(1, input):
        if input % n == 0:
            self += n
    return input == self


for n in range(1, r):
    if chk(n):
        print(n)

2018/04/02 16:01

무명소졸

123123123123

2018/04/06 13:12

김성표

def pf():
    num= int(input("숫자를 입력하시오 : "))
    for x in range(1,num+1):
        result=0
        for y in range(1,x):
            if x%y==0:
                result+=y
        if x==result:
            print(x)

2018/04/06 13:33

thuruk

import java.util.*;

public class hello {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("수 입력 : ");
        int n = sc.nextInt();
        int sum=0;

        for(int i=1; i<=n; i++) {
            for(int j=1; j<i; j++) {
                if(i%j==0) {
                    sum += j;
                }
            }
            if(i==sum) {
                System.out.println(i);
            }
        }

    }

}

2018/04/16 12:27

聂金鹏

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        for (int i=1; i<=n; i++) {
            int sum = 0;
            for (int j=1; j<=i/2; j++) {
                if(i%j == 0)
                    sum += j;
            }
            if (i == sum)
                System.out.println(i);
        }
    }// 자바. 저랑 똑같이 한 분도 있네요...

2018/05/07 01:06

정몽준

java version

import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.IntStream;

public class perfectNumber {
    public static void main(String[] argv) {
        System.out.print("input natural number : ");
        Scanner scanner = new Scanner(System.in);
        System.out.println(Arrays.toString(new perfectNumber().getAllPerfectNumber(scanner.nextInt())));
    }

    private int[] getAllPerfectNumber(int i) {
        return IntStream.rangeClosed(1, i).filter(this::isNatureNumber).toArray();
    }

    private boolean isNatureNumber(int n) {
        int sum = 1;
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                sum += i;
            }
        }
        return sum == n;
    }
}

2018/05/08 21:31

Wilde Oscar

c version

#include <stdio.h>

#define TRUE (1)
#define FALSE (0)

int IsPerfectNum(int cadidate)
{
    int sum = 1, i;
    for (i = 2; i < cadidate; i++)
    {
        if (cadidate % i == 0)
        {
            sum += i;
        }
    }

    return sum == cadidate ? TRUE : FALSE;
}

int GetNextPerfectNumber(int start, int max)
{
    while (++start <= max) {
        if (IsPerfectNum(start))
        {
            return start;
        }
    }

    return FALSE;
}

int main()
{
    int input = 0, index, perpectNumber = 1;
    int perfectNumbers[1000] = { 0, };

    printf("input nature number: ");
    scanf_s("%d", &input);

    for (index = 0; index <= input; index++)
    {
        perfectNumbers[index] = GetNextPerfectNumber(perpectNumber, input);
        if (perfectNumbers[index] == FALSE)
        {
            break;
        }
        perpectNumber = perfectNumbers[index];
    }

    index = 0;
    printf("==========================\n");
    while (perfectNumbers[index] != FALSE)
    {
        printf(" %d ", perfectNumbers[index++]);
    }
    printf("\n==========================\n");

    scanf_s("%d", &input);

    return 0;
}

2018/05/08 21:52

Wilde Oscar

c++ version

#include <algorithm>
#include <list>
#include <iostream>
#include <numeric>

bool IsNotPerfectNumber(int n)
{
    int i = 1, sum = 1;
    while (++i < n)
    {
        if (n % i == 0)
        {
            sum += i;
        }
    }
    return n != sum;
}

int main()
{
    std::list<int> perfectNumbers;
    int max = 0;

    std::cout << "input natural number: ";
    std::cin >> max;
    perfectNumbers.resize(max);
    std::iota(perfectNumbers.begin(), perfectNumbers.end(), 1);

    auto end = std::remove_if(perfectNumbers.begin(), perfectNumbers.end(), IsNotPerfectNumber);

    for (auto n = perfectNumbers.begin(); n != end; ++n)
    {
        std::cout << *n << " ";
    }
    std::cout << std::endl;

    return 0;
}

2018/05/08 22:17

Wilde Oscar

python version

def isNatureNumber(n):
    index = 2
    sum = 1
    while index < n:
        if (n % index == 0): sum += index
        index = index + 1
    return sum == n;

number = input("input nature number: ")
print(list(filter(lambda x: isNatureNumber(x), range(1, int(number) + 1))))

2018/05/08 22:38

Wilde Oscar

go version

package main

import (
    "fmt"
)

func main() {
    fmt.Print("input nature num: ")
    max := 0
    fmt.Scanf("%d", &max)

    result := make([]int, 0)

    for i := 1; i <= max; i++ {
        candidate := i
        sum := 0
        for j := 1; j < candidate; j++ {
            if candidate%j == 0 {
                sum += j
            }
        }
        if candidate == sum {
            result = append(result, candidate)
            print(" ", candidate, " ")
        }
    }
}

2018/05/08 23:13

Wilde Oscar

public static int numbering(int n)
    {
        int sum=0;

            for(int i=1;i<n;i++)
            {
                if(n%i==0)
                {   
                    sum+=i;

                }

            }
            return sum;
        }


//main
                  for(int i=1;i<=n;i++)
        {
            if(numbering(i)==i)
            {
                System.out.println(i);
            }
        }

2018/05/15 20:33

박용훈

function a(n){
  let result = [];
  for(let i = 1; i<n+1; i++) {
    let sum = 0;
    for(let e = 1; e<i; e++) {
      if(i%e ==0) {
        sum +=e
      }
    }
    if(sum == i){
      result.push(i)
    }
  }
  return result;
}

2018/05/22 23:23

채상엽

파이썬 3.6입니다

### 완전수 판별 함수를 생성함 ####
def complete_number(n):
    ### 약수들의 리스트를 구함 ###
    submultiple = []
    for i in range(1, n):
        if divmod(n, i)[1] == 0:
            submultiple.append(i)
    ### 완전수인지 판별함 ###
    if sum(submultiple) == n:
        print("%d는 완전수입니다" % n)
### 1에서 10만까지의 완전수 리스트를 구함 ###
%%time
for n in range(1,100000):
    complete_number(n)

6는 완전수입니다 28는 완전수입니다 496는 완전수입니다 8128는 완전수입니다 Wall time: 14min 42s

2018/05/24 00:22

Gerrad kim

n = int(input("자연수 입력 :")) res = 0

for i in range(1, n+1): for j in range(1, i): if i%j == 0: res += j

if res == i:
    print(res)
res = 0

2018/05/28 09:53

bnewkk


print([j for j in range(1,int(input("N: "))+1) if sum([i for i in range(1, j) if j % i == 0]) == j])

# Output:
#N: 10000
#[6, 28, 496, 8128]

2018/05/30 16:38

재즐보프

Python

n = 30 #n = int(input())
for i in range(1, n+1):
    chk = 0
    for j in range(1, i):
        if i%j == 0:
            chk += j
    if chk == i:
        print(i, end=" ")
#Shorten version
print(*[i for i in range(1, n+1) if i == sum(j for j in range(1, i) if i%j == 0)])

2018/05/31 15:21

Taesoo Kim

import java.util.Scanner;
import java.util.stream.IntStream;

public class PerfectNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        for (int j = 1; j < num + 1; j++) {
            final int z = j;
            if (IntStream.range(1, j).filter(i -> (z % i == 0)).sum() == j)
                System.out.println(j);
        }
    }
}

2018/06/04 21:50

김지훈

def find_complete( n ):
    sum = 0
    for i in range(1, n):
        if n % i == 0:
            sum += i
            #print(i)
    if sum == n:
        return True
    else:
        return False


n = int(input("자연수 N을 입력해주세요"))

for i in range(1, n+1):
    if find_complete(i) == True:
        print(i)

2018/06/06 20:37

meteor

def complete_number(num):
    divisor_list = [ x for x in range(1, num) if (num % x == 0) ]  # 자기 자신을 제외한 약수 리스트

    sum = 0
    for i in divisor_list:
        sum += i

    if sum == num:
        return True
    else:
        return False


input_num = int(input("자연수 N을 입력하세요 : "))

for x in range(1, input_num+1):
    if complete_number(x):
        print(x)

2018/06/23 02:11

Hand

파이썬입니다.

print(list( m for m in range(2,int(input())+1) if sum(x for x in range(1,m) if m%x==0)==m))

2018/06/23 15:53

박종범

Python 3.6

class calc_divisor:
    def __init__(self, num):
        if not(isinstance(num, int)) or num <= 0: raise RuntimeError('자연수를 입력하세요')
        self.num = num

    def divisor(self):
        result = set()                              # list를 이용할때보다 set이 연산속도가 3~4배 빠름
        for x in range(1, int(self.num ** 0.5)+1):  # 약수는 제곱근을 기준으로 대칭을 이루기에
            if not(self.num%x):                     # 루프 회수를 줄이는데 이용
                result |= {x, int(self.num/x)}      # 20000 ** 2의 약수를 구하는데 0.006초 걸릴것이
        return result                               # 전체를 루프하면 200초 가량 걸림

    def complet(self):
        return True if sum(sorted(self.divisor())[:-1]) == self.num else False

if __name__ == "__main__":
    num = input('')
    print(tuple(i for i in range(1,int(num)+1) if calc_divisor(i).complet()))

2018/06/24 02:01

Creator

def yak(n):
    result = []
    for i in range(1, n):
        if n % i == 0:
            result.append(i)
    return result

def perf(n):
    result = []
    for i in range(1, n+1):
        if sum(yak(i)) == i:
            result.append(i)
    return result

print(perf(100)) #[6, 28]


2018/07/03 03:42

WJ K

number = int(input("자연수 n을 입력하세요 : "))

def findNumber(number):

    natural = [] #n이하의 모든 자연수 리스트
    anwser = [] #완전수 담을 리스트

    #0. 입력한 숫자 이하의 모든 정수 리스트 구하기
    for k in range(1, number+1):
        natural.append(k)

    for n in natural:

        divisor = [] #약수 담을 리스트

        #1. 약수 구하기(1과 자기자신 제외)
        t_num = int(n/2)
        if t_num < 1:
            t_num = 1  #만약 나누는 수가 1보다 작으면 1로 초기화시킴.

        while t_num > 0:
            if n % t_num == 0:
                if n != 1:
                    divisor.append(t_num)
            divisor = list(set(divisor))
            t_num -= 1

        #2. 약수 더하기
        total = 0
        for i in divisor:
            total += i

        #3. 약수합과 원래 숫자 비교하기
        if total == n:
            anwser.append(n)

        n += 1

    print(anwser)


findNumber(number)

2018/07/24 17:11

민수연

파이썬입니다.

def perfect(n):
    list=[]
    for x in range(1,n):
        if n%x == 0 : list.append(x)
    if sum(list) == n : return True
    else : return False
print(perfect(int(input())))

2018/07/25 20:20

김준영

def perfect_number(n):
    total = 0
    for j in range(1,n):
        if(n%j==0): total += j
    if(n==total): return True
    else: return False

n = int(input())
for i in range(1,n+1):
    if(perfect_number(i)): print(i, end=" ")
print()

2018/07/29 23:50

박용주

c언어
#include<stdio.h>

int main()
{
    int i ,j;
    int input_num;
    int sum = 0;
    printf("완전수 구하기 \n자연수 N을 입력하면 출력으로 N이하의 모든 완전수를 출력합니다. \n"); 
    scanf("%d", &input_num);

    /* n의 약수를 구함 
    for(j=1; j<=input_num; j++)
    {   
          if(input_num%j==0)
          {
                printf("%d ", j);
          }
    }   */

    for(i=6; i<input_num; i++) // 6미만의 수중에는 완전수가없기떄문에 6부터 시작 
    {   
        sum = 0;

        for(j=1; j<i; j++)
        {   
          if(i%j==0)
          {
                sum+= j;
           }
        }
        if(sum == i)
        {       
           printf("%d ", i);
        }
    }
    printf("는 완전수입니다. \n");

}

2018/08/06 13:01

이우경


#include<stdio.h>
#pragma warning(disable:4996)

int main()
{
    int number, i, j;
    int sum;

    scanf("%d", &number);

    for (j = number; j > 0; j--)
    {
        sum = 0;
        for (i = 1; i < j; i++)
        {
            if (j%i == 0) sum = sum + i;
        }
        if (sum == j) printf("%d \n", j);
    }

    while (getchar() != '\n');
    getchar();
}

2018/08/08 01:42

심준범

input_num = input("완전수 구하기 입력으로 자연수 N을 받으면 출력으로 N이하의 모든 완전수를 출력합니다. : ")
sum = 0

for i in range(1, input_num+1):
    for j in range(1, i):
        if i % j == 0:
            sum +=j
    if sum == i:
        print(i)
    sum = 0 # 0 으로 sum의 값을 초기화 시켜 약수들의 합을 초기화시킨다.

2018/08/10 12:47

이우경

a = int(input()) b = [x for x in range(1, a+1) if x == sum(i for i in range(1, x) if x % i == 0)] print(b)

2018/08/10 20:54

로봇

#완전수 구하기.

N = int(input("자연수 N입력:"))
result = []

for i in range(1, N+1):
    sum = 0
    for j in range(1, i):
        if i%j==0:  
            sum += j
    if i == sum: 
        result.append(i)
print(result)

2018/08/18 12:38

S.H

n=int(input())
t = [i for i in range(1,n) if n%i == 0]
if sum(t) == n:
    print(t)

2018/08/21 17:41

김동률

n=int(input())
res=[]

for i in range(2,n+1):
    lst = []
    for x in range(1,i):
        if i%x==0:
            lst.append(x)
        elif x==i-1:
            if sum(lst)==i:
                res.append(i)
print(res)

2018/08/28 15:17

전형진

// Example program
#include <iostream>
#include <string>
#include <set>

using namespace std;

int GetSumOfDivideNumbers(int aNumber)
{
    // Get Divide Numbers
    set<int> s;
    s.insert(1);
    for (int i=2; i<aNumber; i++) {
        if (aNumber % i == 0) {
            s.insert(i);
            s.insert(aNumber/i);
        }
    }

    int sum = 0;
    set<int>::iterator iter;
    for (iter = s.begin(); iter != s.end(); ++iter){
        sum += *iter;
    }

    return sum;
}

bool isCompleteNumber(int aNumber) 
{
    int sum = GetSumOfDivideNumbers(aNumber);
    if (sum == aNumber) return true;
    else return false;
}

int main()
{
    int input = 2000;

    cout << "Complete Numbers are : ";
    int i;
    for (i = 2; i <= input; i++) {
        if (isCompleteNumber(i)) {
            cout << i << ", ";
        }
    }
}

1000까지의 완전수는 Complete Numbers are : 6, 28, 496,

2018/08/28 23:50

phg98

#include <stdio.h>

void main(void)
{
    int N, i, j, sum_divisor = 0;
    printf("자연수를 입력하시오: ");
    scanf_s("%d", &N);
    printf("\n%d 이하인 완전수는 다음과 같다.\n", N);
    for (i = 1; i <= N; i++) {
        for (j = 1; j <= i - 1; j++) {
            if (i%j == 0) sum_divisor += j;
        } /* sum_divisor 는 i의 약수의 합*/
        if (sum_divisor == i) printf("%d\n", i);
        sum_divisor = 0;
    }
}

C언어로 작성했습니다.

2018/09/04 13:53

이호영

 #include <stdio.h>
 main()
 {
int N,m,i;
printf("자연수 N을 입력하시오."); 
scanf("%d",&N);
printf("N 이하의 완전수는 ");
for(m=1;m<=N;m++){
    int sum=0;
    for(i=1;i<m;i++){
        if(m%i==0){
           sum=sum+i;
        }
    }
    if(sum==m){
        printf("%d ",m);
    }
}
 printf("\n");
 system("pause");
 return 0;
 }

c로 해봤습니당

2018/09/20 20:37

eomchanwoo

import java.util.Scanner;
class CodingDojang {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("자연수를 입력하세요 : ");
        int num = input.nextInt();
        int sum;
        for (int i=2;i<=num;i++){
            sum=0;
            for (int j=1;j<i;j++){
                if (i % j == 0){
                    sum+=j; 
                }
            }
            if (i == sum){
                System.out.print(i+" ");
            }
        }
        System.out.println("");
    }
}

2018/09/29 16:50

13265

N = int(input('Input a number: '))
for number in range(1,N+1):
        if sum(x for x in range(1,number) if number % x == 0) == number:
            print(number)

2018/09/30 15:24

윤종석

// ==================================
        Scanner sc = new Scanner(System.in);
        System.out.print("숫자를 입력해 주세요 : ");
        int num = sc.nextInt();
        System.out.print(num + " 의 약수는 : ");
        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                System.out.print(i + " ");
            }
        }
        System.out.println("입니다.");

2018/10/01 15:58

채규빈

n=input('input any interger : ')
b=[]
for i in range(1,int(n)+1):
    if divide(i)==i:
        b.append(i)
print(b)

def divide(x):
    a=[]
    for i in range(1,x):
        if x%i==0:
            a.append(i)

    return sum(a)
print(b)

파이썬입니다.

2018/10/21 01:23

Sukamuljo

import math
result=[]

def perfect_num2(N):
    result=[]
    #N 이하의 자연수
    for i in range (2, N+1) :
        sum_j=1
        for j in range (2, int(math.sqrt(i))+1) :
            if (j*j ==i) :
                sum_j+=j
                break
            elif(i%j==0) :
                sum_j+=j
                sum_j+=(i/j)
                # 약수의 합이 더 클 경우 break
                if(sum_j>i) :
                    break
        if(sum_j==i) :
            result.append(i)

    print(result)   

2018/11/05 22:42

쨔이

num_list=[]
num_arr=[]
num=int(input("숫자를 입력하시오:"))
for x in range(2,num+1):
    for k in range(1,x):
        if x%k==0:
            num_list.append(k)
    if x==sum(num_list):
        num_arr.append(x)
    num_list=[]
print(num_arr)

2018/11/07 11:32

빅디펜스

insert = int(input()) #28

for indi in range(1+1, insert+1): #2~28
    summ = 0
    for i in range(1, indi):
        if indi % i == 0:
            summ += i
    if indi == summ:
        print(indi)

2018/11/07 16:51

그사람 남한 볼 수 있어요

#include <stdio.h>
#include <stdlib.h>


int main()
{
    int N = 0;
    int i;

    printf("N = ");
    scanf_s("%d", &N);

    int *perfect_number = malloc(sizeof(int)*N);

    printf(" 완전수의 약수는 {");
    for (i = 1; i < N; i++)
    {
        if ((N % i) == 0) 
            perfect_number[i] = i;
        if ((N % i) == 0)
            printf("%d, ", perfect_number[i]);
    }
    printf(" } 입니다.");


    free(perfect_number);

    return 0;
}

2018/11/10 09:43

이호인

import java.util.Scanner;

public class KimSanghyeop
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);

        System.out.print("자연수를 입력하세요 : ");
        int num = sc.nextInt();

        int f1,f2;
        int sum;
        for(f1=1;f1<=num;f1++)
        {
            sum=0;

            for(f2=1;f2<f1;f2++)
            {
                if(f1 % f2 ==0)
                {
                    sum +=f2;
                }
            }

            if(sum == f1)
            {
                System.out.println(f1);
            }
        }
    }
}

2018/11/15 13:47

김상협

Java 8

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.IntStream;

public class tut07 {
  public static void main(String[] args) throws InterruptedException, ExecutionException {
    // num1 을 변경하여 값을 구한다.
    int num1 = 100000;
    List<Integer> list = new ArrayList<>();

    System.out.println("Start Time : " + new Date());
    ForkJoinPool myPool = new ForkJoinPool(2);

    for (int i = 1; i <= num1; i++) {
      final int k = i;
      myPool.submit(() -> {
        if (IntStream.range(1, k).parallel().filter(j -> (k % j) == 0).sum() == k) {
          list.add(k);
        }
      }).get();
    }

    System.out.println(list);
    System.out.println("End   Time : " + new Date());
  }
}

2018/11/23 11:07

num = int(input('숫자를 입력하세요: '))
result = [] # 완전수들을 저장할 리스트

for i in range(1, num+1):
    sum = 0
    for j in range(1, i):
        if i % j == 0: # 주어진 수에 대한 약수 값을 찾기
            sum += j
    if sum == i:
        result.append(i) # 완전수를 리스트에 저장
print(result)

2018/12/06 10:31

하이퍼

void main()
{
    int num, sum;

    printf("숫자를 입력하세요 : ");
    scanf("%d", &num);

    for (int i = 1; i <= num; i++)
    {
        sum = 0;
        for (int j = 1; j < i ; j++)
        {
            if (i % j == 0)
                sum += j;
        }
        if (i == sum)
            printf("%d\n", sum);
    }
}

2018/12/30 14:24

서규섭

num = int(input("자연수 입력 : "))
from math import sqrt
print([x for x in range(2, num+1, 2) if x == (sum(y + (x/y) for y in range(1, int(sqrt(x))+1) if x % y == 0) - x)])

2019/01/01 21:44

lucky1to10

# 입력된 정수 이하의 완전수 구하기
def downer(int):
    # 완전수 리스트
    per_li = list()

    while int > 1:
        if int == sumdiv(int):
            per_li.append(int)

        int -= 1

    # 정렬 후 반환
    return sorted(per_li)

# 약수의 합 (list comprehension 사용)
def sumdiv(int):
    return sum([i for i in range(1, int) if int % i == 0])

def main():
    u = int(input("Input integer : "))
    print(downer(u))

if __name__ == '__main__':
    main()

2019/01/04 11:49

김범식

#include<stdio.h>


int main(void) 
{
    int max;
    printf("완전수 구하기-몇 이하의 수?:");
    scanf_s("%d", &max);
    int i,j;
    int sum = 0;
    for (i = 2; i <= max; i++)
    {
        for (j = i - 1; j >= 1; j--)
        {
            if (i%j == 0)
            {
                sum = sum + j;
            }

        }
        if (sum == i)
            printf("%d  ", sum);
        sum = 0;
    }

    return;

}

2019/01/05 22:02

흐긴노노

perfect_number = int(input())
answer_list = []

for i in range(1, perfect_number):
    number = 0
    flag = 0
    for j in range(1, i):
        if i % j == 0:
            number += j
        if j == i - 1:
            if number == i: flag = 1
    if flag: answer_list.append(i)

print(answer_list)

2019/01/06 13:20

Woohyuck Choi

namespace codingdojang__
{
    class Program
    {
        static void Main(string[] args)
        {
            int temp = 0;

            int input = int.Parse(Console.ReadLine());

            for (int i = 1; i <= input; i++)
            {
                for (int e = 1; e <= i / 2; e++)
                {
                    if (i % e == 0)
                    {
                        temp += e;
                    }
                }

                if (temp == i)
                {
                    Console.WriteLine(i);
                }

                temp = 0;
            }
        }
    }
}

2019/01/08 10:41

bat

import math

number = int(input())


def divisor_make(n):
    divisor_list = set()
    for i in range(1, int(math.sqrt(n)) + 1):
        if n % i == 0:
            divisor_list.add(i)
            divisor_list.add(n//i)
    divisor_list.discard(n)
    return list(divisor_list)


for x in range(1, number + 1):
    divisor_sum = 0
    for y in divisor_make(x):
        divisor_sum += y
    if divisor_sum == x:
        print(x)

2019/01/11 23:01

농창

nNum = int(input())

# Check if it is perfect number
def isPerfectN(num):
    cSum = 0
    for i in range(1, num):
        if num % i == 0:
            cSum += i
    if cSum == num:
        return True
    else:
        return False

perfList = []
for i in range(1,nNum+1):
    if isPerfectN(i) == True:
        perfList.append(i)

print("Result: ", perfList)


2019/01/16 04:01

ChungGeol You

num = int(input())
def perfectnum(num):
    result = []
    for i in range (2, num+1):
        total = 0
        for j in range (1, i):
            if i % j == 0:
                total += j

        if total == i:
            result.append(i)

    return result

print(perfectnum(num))

2019/01/18 11:46

D.H.

def PerfectNum(N): #함수로 정의
    numList=[]
    for x in range(1,N+1): #1부터 N까지
        result=0
        for a in range(1,x): #1부터 자기자신을 제외한 수까지
            if x%a==0:
                result+=a
        if x==result:
            numList.append(x)
    return numList        

2019/01/23 22:43

Lapis

 function perfectNum(N){
  const result = []
  for(let i = 1; i<=N; i++){
    let sum = 0;
    for(let j = 0; j<=i/2; j++){
      if(i%j === 0){
        sum+=j
      }
    }
    if(sum === i){
      result.push(i)
    }
  }
  return `${N}이하의 완전수는: ${result}`
}
perfectNum(28)
//출력값: '28이하의 완전수는: 6,28'

2019/01/25 16:17

돌도끼

N = int(input("Input a natural number: "))

result = []

for i in range(1, N + 1):
    sum_aliquot = 0
    for j in range(1, i):
        if i % j == 0:
            sum_aliquot += j

    if i == sum_aliquot:
        result.append(i)

print(result)

Input a natural number: 10000
[6, 28, 496, 8128]

2019/01/31 23:25

x monciel

result = []
def perfect_number(N):

    for i in range(1, N+1):
        sum = 0
        for j in range(1, i):
            if i % j == 0:
                sum += j
        if sum == i:
            result.append(i)
    print(result)

2019/02/01 17:44

손태호

public class PerfectNumber {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        System.out.print("자연수 N의 값을 입력하시오 > ");

        int N = sc.nextInt();

        perfectnum(N);
    }

    public static void perfectnum(int N){
        int[][] divisor = new int[N+1][N];//divisor[i]에는 i의 약수들을 저장할거임.

        for(int i = 2; i<=N; i++){
            int count = 0;
            for(int j = 1; j<=N; j++){
                if(i%j == 0){
                    divisor[i][count] = j;
                    count++;
                }
            }
        }

        for(int i = 2; i<=N;i++){
            int sum = 0;
            int j = 0; 
            while(divisor[i][j] != i){
                sum += divisor[i][j++];
            }

            if(sum == i)
                System.out.println(sum);
        }
    }
}

2019/02/10 22:03

김동수

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

void func(int num) {
    int tmp = num;
    int sum = 0;
    for (int i = 1; i <= tmp / 2; i++) {
        if (tmp % i == 0) sum += i;
    }
    if (num == sum) printf("%d\n", num);
    return;
}

int main() {
    int num;
    scanf("%d", &num);
    for (int i = 1; i <= num; i++) {
        func(i);
    }
    return 0;
}

2019/02/11 10:12

JohnSuhr

def perfect(num):
    summ = 0
    for i in range(1,num):
        if num % i == 0:
            summ += i
    if summ == num:
        return True
    else:
        return False

def perfect_number(N):
    lst = []
    for i in range(1,N+1):
        if perfect(i) is True:
            lst.append(i)
    return lst  

answer : perfect_number(10000) [6, 28, 496, 8128]

2019/02/12 00:21

dodoman

i1 = input("양수를 입력하세용 : ")
toInt = int(i1)
for i in range(1, toInt + 1) :
    wanJeonSu = [j for j in range(1, i) if i % j == 0]
    sumOfWan = sum(wanJeonSu)
    if sumOfWan == i :
        print(i, end=' ')

2019/02/13 00:14

좋은나쎔

try:
    a = int(input("숫자를 입력하세요: "))
    primeNumber = []
    for i in range(1,a+1):
        mersen = 2**i - 1
        gmk = 2**(i-1)
        f = gmk*mersen
        if i / 2 == 1 or mersen % 2 != 0 and mersen % 3 != 0 and i - 1 != 0:
            if a >= f:
                primeNumber.append(f)      
    print(primeNumber)       
except:
    print("다시입력바람")

2019/02/13 17:44

김규묭

import java.util.Scanner;

public class Problem128 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n;
        System.out.println("자연수를 입력하시오");
        n=scan.nextInt();
        scan.close();

        for(int i=1;i<=n;i++) {
            int sum=0;
            for(int j=1;j<i;j++) {
                if(i%j==0)
                    sum+=j;
            }
            if(sum==i)
                System.out.println(i);
        }
    }

}

2019/02/14 20:52

송인성

num_range = int(input('자연수 입력:'))
sum=0
for in_num in range(1,num_range+1):
    for num in range(1,in_num):
        if in_num%num==0:
            sum+=num
    if sum==in_num:
        print(in_num)
    sum=0

2019/02/28 11:25

비쥬얼 스튜디오로 작성했습니다.

#include <stdio.h>      //헤더 파일

void main() {

    int n;
    printf("N을 입력하세요 : ");  
    scanf_s("%d", &n);      // 변수 n의 값을 입력받아서 저장.

    for (int i = 1; i <= n; i++)    // 1부터 n 까지의 수 중에서 완전수
    {                               // 찾는 반복문 실행
        int sum = 0;    //sum은 자기 자신을 제외한 약수의 합을 받는 변수
        for (int j = 1; j < i; j++) // 변수 i가 완전수인지 판별하는 반복문
        {                           // 1부터 자기 자신을 제외한 수까지 반복
            if (i % j == 0) // 변수 j가 i로 나누어떨어지면 변수 j는 약수
            {
                sum += j;       // 약수 j의 값을 sum에 합산
            }
        }
        if (sum == i)       //만약 약수의 합 sum이 i와 같으면 i 출력
        {
            printf("%d\n", i);      //완전수 출력, 한줄씩 띄워쓰기
        }       //반복문 종료
    }

}

2019/03/17 12:06

Albert

num = int(input('자연수를 입력하세요. :'))

for i in range(1, num + 1):
    list = []
    for j in range(1, i + 1):
        if i % j == 0:
            list.append(j)
        else:
            pass
    if sum(list) - i == i:
        print(i, end= ',')

2019/03/21 20:43

김성근

def find_complete_num(n):
    return [x for x in range(1,n) if x ==sum([i for i in range(1,x) if x%i==0])]

2019/03/22 09:40

한상준

def C(n):
    s = 0
    for i in range(1, n):
        if n%i == 0:
            s += i
    return s

def CN_list(N):
    L = []
    for i in range(1, N+1):
        if C(i) == i:
            L.append(i)
    return L


print(CN_list(30)) 

2019/04/03 09:49

messi

def find_diviser(num):
    result = []
    for i in range(1, num):
        if num % i == 0:
            result.append(i)
    print(result)
    return result

def find_perfect_number(num):
    divisers = find_diviser(num)
    if sum(divisers) == num:
        return True
    return False

user_input = int(input("Enter a number: "))
print(find_perfect_number(user_input))

2019/04/18 09:57

Nonamed

a = int(input())
c= []
for i in range(1, a+1):           
    b= []
    for j in range(1, i):        
        if i % j == 0:
            b.append(j)
    if sum(b) == i:
            c.append(i)
print(c)  

2019/04/24 14:47

cheer

모든 약수의 합 - 자기자신을 구하는 문제이므로 에라토스테네스의 체를 사용하여 소인수분해를 하여 약수의 개수를 구하였고 약수의 개수를 통해 약수의 합을 구할 수 있다. ex) 6 = 2^1 * 3^1 => 약수의 합 (2^0 + 2^1)(3^0 + 3^1) = 12 이와 같은 과정으로 완전수인지 아닌지를 구한다. 시간복잡도는 에라토스테네스의 체가 O(nloglogn)

#include <iostream>
#include <cstring>
#include <cmath>
#include <map>
using namespace std;

int main()
{
    int eratos[1000000];
    int N;
    scanf("%d", &N);
    memset(eratos, 0, sizeof(int) * (N+1));
    eratos[0] = -1;
    eratos[1] = -1;
    for(int i = 2 ; i <= N ; i++)
        eratos[i] = i;
    int sqrtn = int(sqrt(N));
    for(int i = 2; i < sqrtn ; i++)
    {
        if(eratos[i] == i){
            for(int j = i*i ; j <= N; j+=i)
            {
                if(eratos[j] == j)
                    eratos[j] = i;
            }
        }
    }


    for(int i = 2; i <= N ; i++)
    {

        int cur_i = i;
        map<int, int> hash;
        pair<map<int, int>::iterator, bool> ret;
        while(cur_i > 1)
        {
            ret = hash.insert(make_pair(eratos[cur_i], 1));
            if(!ret.second)
            {
                hash[eratos[cur_i]]++;
            }
            cur_i /= eratos[cur_i];

        }
        int sum = 1;
        int tmp_sum;
        for(auto iter = hash.begin(); iter != hash.end(); iter++)
        {
            tmp_sum = 0;
            while(iter->second >= 0)
            {
                tmp_sum += pow(iter->first,(iter->second)--);
            }
            sum *= tmp_sum;
        }
        if(sum == 2 * i)
            cout << i <<endl;
     //   else
     //       cout << sum << endl;
    }

    return 0;

}

2019/05/01 16:33

이기준

N=int(input())

Factor=[]
for n in range(1,N+1):
    factor=[]
    for i in range(1,n):  
        if n%i==0:
            factor.append(i)

    if sum(factor)==n:
        Factor.append(n)

print(Factor)

다만, 완전탐색으로 구현해내서인지 입력이 커질수록 계산횟수가 엄청나게 많아져서 시간이 오래걸리는게 흠이네요;;

2019/05/02 14:11

암살자까마귀

perfect_num = int(input('자연수를 입력하시오: '))

pn_list = []
for i in range(1, perfect_num):
    sum = 0
    for j in range(1, i):
        if i%j == 0:
            sum += j
    if i == sum:
        pn_list.append(i)
print(pn_list)

2019/05/06 18:54

Hwaseong Nam

N = int(input())

x=0; pef_n = []
for num in range(1, N+1) :
    x=0
    for i in range(1, (num//2)+1) :
        if num%i == 0 :
            x+=i
    if num == x :
        pef_n.append(num)
print(pef_n)

이제 풀이봐야지..

2019/05/16 13:15

이진형

python 3.6

N = eval(input('N : '))
print([x for x in range(1, N+1) if x == sum([i for i in range(1, x) if x%i == 0])])

해놓고 보니까 젤 위에 답이랑 똑같았음.

2019/05/18 16:29

최상혁

N = int(input('Enter the Number: '))    # 입력받아 정수형으로 저장
perfectNum = []                         # 완전수 빈 리스트 생성

for i in range(2, N+1):                 # 입력받은 수까지 반복문 실행(1은 제외)
    sum = 1                             # 약수 합 저장 변수
    j=2                                 # 약수 구하기 위해 반복문 돌릴 시작수
    chkNum = int(i / 2)                 # 약수 체크할 최대 수 (시간을 줄이기 위함)

    while j < chkNum:                   
        if i % j == 0:                  # 약수인지 확인
            chkNum = i//j               # 약수 체크할 최대 수 업데이트
            sum += j + chkNum           # 약수 합 저장 (몫, 나눈 수)

        j += 1                          # 약수 체크 수 업데이트

    if sum == i:                        # 완전수인지 확인
        perfectNum.append(i)            # 완전수 리스트 업데이트

print(perfectNum)                       # 출력

2019/06/06 20:41

Hyebin Oh

코드 연산 시간이 좀 있어서 연산 시간 줄이기 위한 얍삽이(?)를 조금 추가하였습니다 - Hyebin Oh, 2019/06/06 20:43

파이썬 3.7 사용.

def isPerfectNum(n): #n이 완전수이면 True, 아니면 False
    middle_point=int(n/2)
    sum=0
    for a in range(1, middle_point+1): #n/2 이하까지만 보면 충분
        if n%a==0:
            sum+=a #n의 자기자신을 제외한 약수들의 합
    if sum==n:
        return True
    else:
        return False

if __name__=="__main__":
    while(True):
        inputstr=input('자연수를 입력하세요: ')
        try:
            N=int(inputstr)
            if N>0:
                break
        except:
            print('입력 에러. 다시입력하세요\n')

    result=[]
    for num in range(1,N+1):
        if isPerfectNum(num):
            result.append(num)
    print(result)

2019/06/06 21:43

왕초보

data = int(input())

result = []

for i in range(1, data + 1):
    sum = 0
    for j in range(1, i):
        if i % j == 0:
            sum += j

    if i == sum:
        result.append(i)


print(result)

2019/06/24 12:08

파이썬주니어

in_num = int(input()) perfect_num = ""

for num in range(1,in_num+1): div = [x for x in range(1,num) if num%x == 0] ''' div_sum = 0

for x in div:
    div_sum += x
'''
div_sum = sum(div)

if div_sum == num:
    perfect_num += (str(num)+" ")

print(perfect_num)

2019/07/02 17:14

SeongMin Hwang

N = int(input('Enter upper bound : '))
divisorSum = 0
for n in range(1, N) :
    for i in range(1, n) :
        if n % i == 0 :
            divisorSum += i
    if n == divisorSum :
        print(n, end = ' ')
    divisorSum = 0

2019/07/05 00:45

조현우

def DashInsert(num):
    result = []
    for i in range(2,num+1):
        t = []
        for j in range(1,i):
            if i % j == 0:
                t.append(j)
        if sum(t) == i:
            result.append(i)

    return result


print(DashInsert(10000))

2019/07/05 21:17

최은미

약수들의 합을 구하는 함수 먼저 만들고 그 뒤 N이하 완전수를 출력했습니다.

def SumOfFactors(N):
    s = 0
    for i in range(1, N):
        if N % i == 0:
            s += i
    return s

def Perfect(N):
    r = []
    for x in range(1, N+1):
        if SumOfFactors(x) == x:
            r.append(x)
    return r

2019/07/18 20:39

인애

import java.util.Scanner;

public class perfectNum {

    static boolean isPerfect (int n) {
        int sum=0;

        sum+=1;
        for(int i=2; i<=Math.sqrt(n); i++) {
            if(n%i==0) {
                sum+=i;
                if(i<Math.sqrt(n)) {
                    sum+=n/i;
                }               
            }
        }
        if(n==sum) return true;
        else return false;
    }

    static void printPerf(int n) {
        for(int i=3; i<=n; i++) {
            if(isPerfect(i)) {
                System.out.print(i + " ");
            }
        }
        System.out.println("");
    }

    static int num ;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(true) {
            num=sc.nextInt();
            if(num>2) break;
            System.out.println("2보다 큰 정수를 입력하세요.");
        }
        sc.close();

        printPerf(num);
        System.out.println("프로그램을 종료합니다.");
    }
}

2019/07/23 03:21

김준성

python

N = int(input()) # 임의의 자연수 N 입력
complete_N = []
for i in range(1,N+1):
    s = []
    for k in range(1,i):
        if i % k == 0:
            s.append(k) # 숫자 i에 대한 약수를 구해 리스트 s에 집어넣음
    if sum(s) == i: # 완전수의 조건 확인
        complete_N.append(i)
print(complete_N)

2019/07/29 15:35

apriori

def perfectNum(num): listA=[] #sums=0

for nums in range(2, num+1):
    sums=0
    for div in range(1, nums):
        if(nums%div==0):
            sums+=div

    if(nums==sums):
        listA.append(nums)
return listA

lists=perfectNum(30) print(lists) ```

2019/07/31 14:32

Hwain Choi

%MATLAB
%자연수 N이하 완전수를 출력
N=input('자연수N 이하 완전수를 출력하기 위해 N을 입력하세요 : ');
com_num=[];
m=1; % m은 추후 완전수를 배열에 저장하는데 쓰임.
for l=2:1:N-1 %자연수의 약수를 구하는 for문과 약수를 배열에 저장하는 if문을%N이하 자연수에 대해 반복수행하기 위한 for 문
    n=1;div=[];
    for k=1:1:l-1 %약수를 구하기 위한 for문
        if mod(l,k)==0
            div(n)=k;
            n=n+1;
        end
    end
    if sum(div)==l %위에서 구한 약수를 배열에 저장하는 if 문
        com_num(m)=l;
        m=m+1;
    end
end
disp ('N이하 자연수 중 완전수는');
disp(com_num);

2019/08/01 22:48

주노리

n=int(input("자연수 입력:"))
a=[]
b=[]
for i in range(1,n+1):
    for j in range(1,i+1):
        if i%j==0:
            a.append(j)
    if i==sum(a)-i:
        b.append(i)
        a.clear()
    else:
        a.clear()
print(b)

2019/08/06 11:06

박재욱

def abs(n,i,res):
    if (n//2)+1 <= i:
        return
    if n%i==0:
        res.add(i)
    abs(n,i+1,res)
    return sum(res)

def prob(num):
    for i in range(1,num+1):
        temp=set()
        if abs(i,1,temp) == i:
            print(i)            
prob(29)

2019/08/07 17:35

최재학

def is_perfect(n):
    d = [1]
    for i in range(2, int(n**0.5)+1):
        if n%i==0: d.append(i); d.append(n//i)
    if sum(d) == n: return True
    else: return False

def print_num(n):
    l = list(filter(is_perfect, list(range(2, n+1))))
    for x in l: print(x, end=' ')

num = int(input('Enter the num: '))
print_num(num)

2019/08/26 11:18

돔돔

def Perfect(num):
    k = 0
    divisor = []
    for i in range(1, num):
        if num%i == 0:
            divisor.append(i)
    k = sum(divisor)
    if k == num:
        return True
    else:
        return False
a = int(input())
for i in range(1, a+1):
    if Perfect(i):
        print(i)

2019/08/28 20:21

이명운

def _absolute(num) :
    nums=[]
    for b in range(1,num+1):
        #print("b:"+str(b))
        sum=0
        for a in range(1,b):
            #print("a"+str(a))
            if b%a==0:
                sum+=a
        #print("sum"+str(sum))
        if sum == b:
            #print("추가")
            nums.append(sum)
    print(nums)

_absolute(10000)

2019/08/29 16:46

Cosu

result = list() N = int(input("자연수를 입력해주세요 : "))

for j in range(1,N+1): sum = 0 for i in range(1,j) : if j % i == 0 : sum += i if sum == j : result.append(j)

print(result)

2019/09/10 14:03

김민규

 var a=prompt('숫자를 하나 입력해주세요. 입력한 숫자보다 작은 완전수를 출력합니다.')
    var 완전수=[];
    for(var i=1;i<a;i++){
        var 약수합 =0;
        for(var j=1;j<i;j++){
            if(i%j===0){
                약수합 += j
            }
        }

        if(i===약수합){
            완전수.push(i);
        }

    }
    alert('a 이하의 완전수는'+완전수+'가 있습니다.')

2019/09/10 18:09

이태혁

PHP

$n = 10000;

$fn = function(int $num) : bool {
    $arr = [];
    foreach (range(1, $num) as $i) {
        if ($num !== $i && $num % $i === 0) $arr[] = $i;
    }
    return $num === array_sum($arr);
};

$result = [];
foreach (range(1, $n) as $i) {
    if ($fn($i)) $result[] = $i;
}

print_r($result); // [6, 28, 496, 8128]

2019/09/11 11:51

d124412

intNum = int(input("숫자를 입력하세요 : "))
print([y for y in range(1, intNum) if y == sum([x for x in range(1, y) if y % x == 0])])

2019/09/11 12:21

Dreaming Pug

N = int(input())
def hoho(N):
    answer = [x for x in range(1,N+1) if x==sum(y for y in range(1,x) if x%y==0)]
    return answer

print(hoho(100))

2019/09/18 11:23

Woonghee Lee

// 자연수 n = 200으로 입력
        int n = 200, i=1;
        StringBuffer sb = new StringBuffer();

        for(i=1; i<=n; i++) {
            if(200%i == 0) {
                String str = (i<n)?", ":"";
                sb.append(i+str);
            }
        }
        sb.toString();
        System.out.println(sb);

답 : 1, 2, 4, 5, 8, 10, 20, 25, 40, 50, 100, 200

2019/09/30 19:30

yeeun shim

value = int(input("완전한 수 : "))

def Gongyacsu(num):
    result = []
    for i in range(1,num):
        if num % i == 0:
            result.append(i)
    total = sum(result)
    if total == num:
        return total
    else :
        return False

for a in range(1,value+1):
    if Gongyacsu(a):
        print(a)
    else :
        pass

2019/10/06 21:52

semipooh

n = int(input('자연수 N : '))
ans = []

def factor(k):
    n_list = []
    for i in range(1, k//2+1):
        if k%i==0:
            n_list.append(i)
    if sum(n_list) == k:
        return k
    else:
        return False

for i in range(1, n):
    if factor(i):
        ans.append(i)

print(ans)

2019/10/07 10:32

후눈

파이썬 완전수 계산하는데 시간이 많이 걸리기에 나누는 횟수를 줄여봤습니다.

# Perfect Number
n = int(input("Input number = "))
perfect_num = []
if n < 6:
    print("There isn't a perfect number")
else:
    for i in range(6, n+1):
        sum = 1
        m_factor = i
        div = 2
        while div < m_factor:
            if i % div == 0:
                m_factor = i // div
                sum = sum + div + m_factor
            div += 1
        if i == sum:
            perfect_num.append(i)

print(perfect_num)

2019/10/10 21:58

Jzay

package practiceLv1;


import java.util.*;
public class 완전수구하기 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        ArrayList<Integer> 완전수_list = new ArrayList<Integer>();
        for(int i=2; i<=num; i++) {
            int sum = 0;
            ArrayList<Integer> num_list = new ArrayList<Integer>();
            for(int j=1; j<i; j++) {
                if(i%j==0) {
                    num_list.add(j);
                }
            }
            for(int k = 0; k<num_list.size(); k++) {
                sum=sum+num_list.get(k);
            }
            if(sum==i) {
                완전수_list.add(i);
        }
            num_list.clear();
        }
        System.out.println(완전수_list);

    }

}

2019/11/08 15:54

big Ko

#include <iostream>
using namespace std;

int main(){
    int n,temp=0;
    cin>>n;

    for(int i=2;i<=n;i++){
        for(int j=1;j<i;j++){
            if(i%j==0)
                temp+=j;
        }
        if(i==temp)
            cout<<i<<" ";
        temp=0;
    }
}

2019/11/09 11:40

저택벚꽃

파이썬 입니다.

input_num=int(input("정수를 입력하세요 : "))        
for i in range(1,input_num+1):
    ssum=0                   # 약수합을 0으로 초기화 시켜준다.
    for j in range(1,i):   # 이 단계에서 자기자신을 제외한  약수를 찾고
        if i%j == 0:
            ssum += j        # 약수 전부를 더한다.
    if ssum == i:          
        print(i,end=' ')  

2019/11/13 11:51

data big

파이썬 3.6 입니다

def get_perfect_numbers(n):
    result = []    
    for candidate_no in range(1, n + 1):
        divisor = [i for i in range(1, candidate_no) if candidate_no % i == 0]
        if sum(divisor) == candidate_no:
            result.append(candidate_no)
    return result

2019/11/26 18:40

vkospi

a=int(input())
b=[]
for i in range(1,a):
    if a % i == 0:
        b.append(i)
print(b)

2019/12/19 23:30

뚜루꾸까까

파이썬입니다.

num = int(input('숫자를 입력하시오: '))
result = []
for a in range(1,num+1):
    sum = 0
    for b in range(1, a):
      if a % b == 0:
        sum += b
    if a == sum:
      result.append(sum)

result    

2019/12/20 15:09

Sean

int *PerfectNumber(int N)
{
int tempResult[] = new int;
int sizeArray = 0;
int counter1 = 0;
int counter2 = 0;
while(N >counter1)
{
counter1++;
for(int i = 1; i< N; i++)
{
for(int j =1; j<i;j++)
{
i%j == 0 ? counter2 += i : 0;
}
counter2 == i ? tempResult[sizeArray] = counter2, sizeArray++, counter2 =0: 0;
}
}


int result[sizeArray];
for(int i =0; i<sizeArray;i++)
{
result[i] = tempResult[i];
}
delete tempResult;
return result;
}

2019/12/27 00:50

Anderson

n=int(input("양의 정수 n을 입력하십시오: "))
k=2  #1의 약수는 하나뿐인데 자기 자신을 제외해야 하므로 약수가 1개 이상인 2부터 시작
while k<=n:
    elst=[]  #약수를 삽입할 빈 리스트 생성
    for num in range(1,k):  #k인 자기 자신을 약수에서 제외해야하므로 k+1이 아니라 k
        if k%num==0:
            elst.append(num)
    if sum(elst)==k:
        print(k,"완전수입니다.")
    k+=1

2019/12/30 13:28

박시원

def aliquot(num):
        n = 1
        for i in range(num+1):
            if (num%n==0):
                empty.append(n)
            n += 1

stdNum = int(input("StandardNumber: "))

cnt =2

while(cnt<=stdNum):

    empty=[]
    aliquot(cnt)
    answer = sum(empty)
    if cnt == answer-cnt:
        print(cnt)
    cnt += 1


2020/01/11 22:38

Jung Marco

N=int(input("N="))
result=[]
sum=0
a=1
b=1
for a in range(1,N):
    for b in range(1,a/2):
        if a%b==0:
            sum=sum+b
    if sum==a:
        result=result+[a]
print(result)

2020/01/15 07:44

Michael

a = int(input("숫자를 입력: "))
b = []
c = []
for m in range(1, a+1):
    for i in range(1, m):
        if m%i == 0 :
            b.append(i) 
    if m == sum(b):
        c.append(m)
    b = []  
print(c)            

2020/01/22 13:14

김희준

N,Nlist,Nfinishlist = int(input()), list(), list()
for i in range(1,N+1):
    for j in range(1,i):
        if i%j == 0:Nlist.append(j)
    if sum(Nlist) == i:Nfinishlist.append(i)
    Nlist = list()
print(Nfinishlist)

2020/01/23 14:34

BlakeLee

import java.util.Scanner;
public class PerfectNumber {
    public static void main(String[] args) {
        Scanner Sc = new Scanner(System.in);
        int sum = 0;
        System.out.print("숫자를 입력하시오 :");
        int input = Sc.nextInt();
        for(int i = 1; i<=input; i++) {
            for(int j =1; j<i; j++) {           //약수 구하기 및 약수의 합
                if((i%j)==0) {
                    sum+=j;
                }   
            }
            if(sum==i) {
                System.out.print(i+" ");        //결과값 출력
            }
            sum = 0;                            //sum 초기화
        }
        Sc.close();
    }
}

2020/01/26 23:24

김강민

파이썬입니다

약수의 리스트를 반환하는 함수를 정의한 다음 풀었습니다

N = int(input())


def factor(n):
    if n == 1:
        return [1]
    elif n == 2:
        return [1, 2]
    f = {1, n}
    for m in range(2, int(n ** 0.5) + 1):
        if n % m == 0:
            f |= {m, n // m}
    f = sorted(list(f))
    return f


print('{}이하의 모든 완전수: '.format(N))
for i in range(1, N + 1):
    if sum(factor(i)) == 2*i:
        print(i)

2020/01/27 01:19

우재용

num=int(input('Enter number: '))


com_num=[]


for i in range(1,num+1):
    sum=0

    for j in range(1,i):

        if i%j==0:
            sum+=j

    if i==sum:
        com_num.append(i)


print(com_num)



2020/01/27 20:57

생선집알바

a = int(input('Enter the nunber:'))



for i in range(1,a+1):

    yaksu = 0

    for j in range(1,i+1):

        if i%j == 0 :

            yaksu += j

        else: continue

    if i == yaksu - i:

        print (i,yaksu-i)

2020/01/31 08:41

HyukHoon Kim

python 3.8

x=int(input("적당한 숫자를 입력하시오. : "))
print(list(n for n in range(1,x) if sum( i for i in range(1,n) if n % i == 0) == n))      

x=int(input("적당한 숫자를 입력하시오. : "))
a=[]
for n in range(1,x):
     sum=0
     for i in range(1,n):  
        if n % i == 0:
             sum=sum+i
     if sum == n :
          a.append(sum)
print(a)

2020/02/05 17:41

mr. gimp

define _CRT_SECURE_NO_WARNINGS

include

int main() { while(1) { int n; int result = 0;

    printf("숫자를 입력하시오 > "); scanf(" %d", &n);

    for (int i = 1; i < n; i++)
    {
        if (n % i == 0)
        {
            result += i;
        }
    }

    if (n == result)
    {
        printf("%d는 완전수 입니다.\n\n", n);
    }
    else
    {
        printf("%d는 완전수가 아닙니다.\n\n", n);
    }
}
return 0;

} // C로 코딩했습니다.

2020/02/07 16:24

하루

def perfectN(N):
    N = int(input('숫자를 입력하세요:'))
    answer = []
    for j in range(2, N+1):
        if sum([i for i in range(1, int(j/2+1)) if j % i == 0]) == j:
            answer.append(j)
    return answer

2020/02/17 10:34

KMH

파이썬 3.8

n = int(input('자연수 입력 : '))
for i in range(1,n+1):
    t = i//2
    sum = 0
    for j in range(1,t+1):
        if i%j==0:
            sum +=j
    if sum == i:
        print(i)

2020/02/17 16:54

카레맛카레

A= int(input()) print([x for x in range(1, A+1) if x==sum(y for y in range(1, x) if x%y==0)])

위에서 박 시우 님이 하신 코딩을 참고했습니다.

2020/02/18 15:52

이국성

N = int(input())

result=[]

for i in range(1,N):
    l=[]
    for j in range(1,i):
        if i%j==0:
            l.append(j)

    if i == sum(l):
        result.append(i)

print(result)

2020/03/03 17:10

황예진

def low_per(number):
    prp=[]
    for i in range(1, number+1):
        sum_p=0
        for j in range(1, i):
            if i%j==0:
                sum_p+=j
        if sum_p==i:
            prp.append(i)
    return prp
print(low_per(1000))

2020/03/05 00:35

Caplexian _

n=int(input())
for a in range (1,n+1):
k=0
num=[]
while (k<a):
k=k+1
if a%k==0:
if a!=k:
num.append(k)
if (sum(num)==a):
print (a,'......',num)

2020/03/09 04:45

Buckshot

# 코딩도장 완전수 구하기 문제
# 완전수란 자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수
# 자연수 N을 받고 N이하의 모든 완전수를 출력하는 코드를 작성하라


def divisors_sum(num):  # num을 넣으면 약수의 합을 구해는 함수
    i = 2
    total = {1}
    loop = num ** 0.5

    while i <= loop:
        if num % i == 0:
            total.add(i)
            total.add(num / i)
        i += 1
    return sum(total)

N = input('원하는 자연수 N을 입력하세요 : ')
for i in range(6, int(N)+1):  # 6이 가장 작은 완전수 이기 때문에
    if divisors_sum(i) == i:  # sum이 자기 자신과 같은 경우가 완전수
        print(i)

2020/03/10 20:10

우제훈

#Perfect Number Finder by Python

N=int(input("Input a Number: "))
sum=0
Answer_list=[]

for i in range(1,N+1):
    for j in range(1,i+1):
        if i%j==0:
            sum+=j
    if sum==2*i:
        Answer_list.append(i)
    sum=0

print(Answer_list)

2020/03/10 20:47

여종헌

input_number = int(input("숫자를 입력하세요: "))
result = 0

for i in range(1, input_number+1):
    for j in range(1, i):
        if i % j == 0 :
            result += j

    if i == result :
        print(i)

    result = 0

2020/03/19 00:58

뤼크

def perfect_number(n):
    result = []

    for j in range(1, n + 1):
        list_n = []
        for i in range(1, j + 1):
            if j % i == 0 and j != i:
                list_n.append(i)

        list_sum = sum(list_n)

        if list_sum == j:
            result.append(j)

    return result


print(perfect_number(6))
print(perfect_number(28))

2020/03/19 09:56

inca1735

#include <iostream>
#include <vector>
using namespace std;
/*
자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다. 
예를 들면, 6과 28은 완전수이다. 6=1+2+3 // 1,2,3은 각각 6의 약수 
                                28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.
*/

void Func(int n) {
    vector<int> v;
    int sum;
    for (int i = 1; i <= n; i++) {
        sum = 0;
        for (int j = 1; j < i; j++) {
            if (i%j == 0) { v.push_back(j);}
        }
        if (v.size() > 0) {
            for (int j = 0; j < v.size(); j++) {
                sum += v[j];
            }
        }

        if (sum == i) {
            cout << i << " = ";
            for (int j = 0; j < v.size(); j++) {
                if (j == v.size() - 1) { cout << v[j] << endl; }
                else { cout << v[j] << " + "; }
            }
        }
        v.clear();
    }
}

int main() {
    Func(28);
}

2020/03/20 15:45

++C

l=[]
p=[]
N=10000
for k in range(2,N):
    for i in range(1,k):
        if k%i==0:
            l.append(i)
        else:
            pass
    if sum(l)==k:
        p.append(k)
        l=[]
    else:
        l=[]
        pass
print(p)

2020/03/28 21:33

di figo

n_list = list()
n_sum = 0
n = int(input())
perfect_no = list()

for k in range(1,n+1):
    for i in range(1,k):
        if (k%(k-i))==0:
            n_list.append(k-i)

    for j in n_list:
        n_sum += j

    if n_sum == k:
        perfect_no.append(k)
    n_list = list()
    n_sum = 0

print(perfect_no)

python 코드가 길어서 그런지 속도가 엄청 느리네요.

2020/04/06 00:02

기둘비

num = int(input("숫자: "))
lists = []
for x in range(1,num+1):
    list = []
    for y in range(1,x+1):
        if x%y == 0: # 10%1 10%2 10%3 10%4 10%10
            list.append(y)#list = [1,2,5,10]
    list.remove(x)
    if sum(list) == x:
        lists.append(x)

print(lists)

2020/04/07 02:20

Lee Lee

def p(N):
    for j in range(1, N+1):  # j 는 자연수N 이하의 숫자 대입
        h = 0  # h = 합을 저장
        for i in range(1, j): 
            if j % i == 0: # 나누어 떨어지면 합에 저장하기
                h += i
        if j == h:
            print(j, end=' ')


p(10000)

2020/04/17 19:13

ptjddn95

n=int(input('숫자 입력:  '))

mm=[]

for i in range(1,n):
    sum1=0
    for j in range(1,i-1):
        if i%j==0:
            sum1+=j
        else: pass
    if sum1==i:
        mm.append(i)
    else: pass
print(mm)

2020/04/22 21:19

양양짹짹

import java.util.ArrayList;
import java.util.Scanner;

public class Q128 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        ArrayList<Integer> pn = new ArrayList<Integer>();
        for (int i = 1; i < n+1; i++) {
            int sum = 0;
            for (int j = 1; j < i; j++) {
                if ((i % j) == 0) sum += j;
            }
            if (i == sum) {
                pn.add(i);
            }
        }
        System.out.println(pn);
        scan.close();
    }
}

2020/05/05 14:08

Daniel Park

input = input("number?")
component = []

for j in range(1, int(input)):
    temp = []
    for i in range(1, j):
        if j % i == 0:
            temp.append(i)
    sum = 0
    for i in temp:
        sum += i
    if sum == j:
        component.append(sum)

print(component)

2020/05/06 05:10

아울

def perfect_nums(n):
    def check_perfect(x):
        factors = [i for i in range(1, x) if x % i == 0]
        return sum(factors) == x
    return [i for i in range(1, n + 1) if check_perfect(i)]

2020/05/06 20:45

김준혁

Clojure를 이용하여 간단하게 한 번 만들어 봤습니다.

(print(filter #(= %(apply +(filter(fn[n](= 0(rem % n)))(range 1 %))))(range 2(inc(read)))))

2020/05/08 01:35

최수현

a = int(input())
insu = []
complete = []
for j in range(1,a+1):
    globals()['insu{}'.format(j)] = []
    i = 1
    while i < j:
        if j%i == 0:
            globals()['insu{}'.format(j)].append(i)
            i += 1
        else:
            i += 1
    if sum(globals()['insu{}'.format(j)]) == j:
        complete.append(j)
print("%d 이하의 완전수는:%s"%(a,complete))

2020/05/08 13:50

Money_Coding

#약수구하기
def numbers(n):
    nlist=[]
    for i in range (1,n+1):
        if n%i==0:
            nlist.append(i)
            nlist.append(n//i)
        else:
            pass
    nlist1=list(set(nlist))
    nlist1.sort()
    return nlist1
N=int(input())
for x in range (1,N+1):
    numberslist=numbers(x)
    answer=0
    for i in numberslist:
        answer+=i
    if answer==x*2:
        print(x)
    else:
        pass

2020/05/08 17:33

도희성

input_temp=int(input())
perfect_num=[]

for i in range(2,input_temp+1) :
    temp=[]
    sum_temp=0

    for j in range(1,i) :
        if i%j==0:
            temp.append(j)

    for k in range(0,len(temp)) :
        sum_temp+=temp[k]

    if sum_temp==i:
        perfect_num.append(i)

print(perfect_num)

2020/05/22 10:11

조윤재

구해지긴하지만 입력받는 숫자가 커질 시 심하게 느려지네요!

for x in range(1,num+1):
    sum = 0
    for y in range(1,x+1):
        if x % y == 0:
            sum += y
            if sum - x == x:
                num_list.append(x)
            else:
                pass
        else:
            pass

print(num_list)

2020/05/28 20:47

진)파이썬마스터

한줄에 표현하신 분들 리스펙합니다..

while True:
    N = input("숫자를 입력하시오: ")
    try:
        N = int(N)
        break
    except:
        print("다시 입력하시오.")

def nature(N):
    A=list()
    for num in range(1,N):
        if N%num ==0:
            A.append(num)
    if sum(A) == N:
        return True
    else:
        return False

def findnature(N):
    for i in range(1,N+1):
        if nature(i)==True:
            print(i)

findnature(N)

N에 10000을 입력한 결과 6, 28, 496, 8128이 나옵니다.

2020/07/27 14:47

김병관

def get_aliquots(N):
    aliquots = []
    for n in range(1, N):
        if N % n == 0:
            aliquots.append(n)
    return aliquots

N = int(input('Enter number:'))
perfect_number = []

for n in range(2, N+1):
    if sum(get_aliquots(n)) == n:
        perfect_number.append(n)

print(perfect_number)

2020/08/05 08:03

Chang-Hoon Lee

public class Test{
    public static void main(String[] args) {
        int count;
        ArrayList<Integer> divisor = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();

        for(int i = 1; i <= n; i++) {
            for(int j = 1; j < i; j++) {
                if(i % j == 0) divisor.add(j);
                }
            count = 0;
            for(int e : divisor) {count += e;}
            if(i==count) {System.out.print(i+" ");}
            divisor.clear();
        }
    }
}

2020/08/18 12:28

들산

import java.util.*;

public class test4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("자연수를 입력 하십시오 : ");
        int num = scanner.nextInt();

        for(int a = 1; a < num ; a++) {
            if(kanzensuu(a)) System.out.print(a+",");
        }
    }

    public static boolean kanzensuu (int input) {
        int temp = 0;
        for(int x = 1; x < input; x++) {
            if(input % x == 0){
                temp += x;
            }
        }
        return (temp == input);
    }
}


2020/09/11 18:44

nazunamoe

namespace _60일차_9월30일
{        
    class MainApp
    {

        //6=1+2+3 // 1,2,3은 각각 6의 약수 28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
        public static List<int> Result(int num)
        {
            List<int> Data = new List<int>();
            for(int i = 1; i < num; i++)
            {
                if (num % i == 0)
                    Data.Add(i);
                else continue;
            }

            return Data;
        }

        static void Main(string[] args)
        {
            Console.Write("Number Input : ");
            string input = Console.ReadLine();

            foreach(int result in Result(int.Parse(input)))
            {
                Console.Write($"{result} ");
            }
        }
    }
}

2020/09/30 11:56

MinSeung Kang

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.print("숫자입력 : ");
        int number = sc.nextInt();
        for(int i = 1; i < number+1; i++) {     
            int sum = 0;
            for(int j = 1; j < i; j++) {
                if(i%j == 0) {
                    sum += j;
                }
            }
            if(sum == i) {
                System.out.printf("%d는 완전수 \n", i);
            }
        }
    }

2020/10/02 20:51

B A

def perfect(n = 0):

    b = []
    for i in range(2,n+1):
        a = []
        for j in range(1,i):
            if i % j == 0:
                a += [j]
        sums = sum(a)
        if sums == i:
            b += [i]
    return print(b)

2020/10/02 21:41

유태훈

n=int(input())
for i in range(2,n+1):
    s_num=0
    for j in range(1,i):
        if i%2==0 and i%j==0:
            s_num+=j
    if i==s_num:
        print(i)

2020/10/06 10:09

AppleFarmer

class NumberFinder:
    def __init__(self):
        self.result = []
    def searchNumber(self,n):
        for i in range(2,n+1):
            divn = []
            for j in range(1,i):
                if i%j==0:
                    divn.append(j)
            if sum(divn)==i:
                self.result.append(i)
        return self.result

a = NumberFinder()
b = a.searchNumber(10000)
print(b)

2020/10/10 16:16

footsize

파이썬입니다

number = int(input('Please input natural number: '))

perfect_num = []
for num in range(1, number):
    i_list = []
    for i in range(1, num):
        if num % i == 0:
            i_list.append(i)

    if sum(i_list) == num:
        perfect_num.append(num)


print('perfect number is: ')
for num in perfect_num:
    print(num)

2020/10/21 20:51

방금프로그래밍시작함

def perf_num(N):
    perf = []
    for i in range(1,N+1):
        aliquot = []
        for j in range(1,i):
            if i%j==0:
                aliquot.append(j)
        if sum(aliquot) == i:
            perf.append(i)
    return perf

N=10000
print(perf_num(N))

#한줄버전
print([i for i in range(1,N+1) if sum([j for j in range(1,i) if i%j==0])==i])

2020/11/04 09:55

aryagaon

def yaksu(num):
    result = []
    for i in range(1,num):
        if num % i == 0:
            result.append(i)
    return result

num = input('INPUT:')

for i in range(1,int(num)):
    if sum(yaksu(i)) == i:
        print(i)

2020/11/16 08:55

DSHIN

package codeDojang;

import java.util.Scanner;

public class Prac {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num=0;
        num = sc.nextInt();
        int cnt=0;


        for(int i=1;i<=num;i++) {
            int sum=0;
            for(int j=1;j<i;j++) {
                if(i%j==0) {
                    sum+=j;
                }
            }
            if(sum==i) {
                System.out.println(i);
            }
        }   


    }
}

2020/11/16 23:42

yijun kim

def perfectNumber(n):
    divisor = []
    for i in range(1, n + 1):
        divisor.append(getDivisor(i))
    i = 0
    result = []
    while i < n:
        if sum(divisor[i]) == i + 1:
            result.append(i + 1)
        i += 1
    print(result)


def getDivisor(n):
    temp = []
    for i in range(1, n + 1):
        if n % i == 0:
            temp.append(i)
    temp.pop()
    return temp


perfectNumber(500)

2020/11/18 21:22

김우석

def divisor(a):
    lst = []
    for i in range(1, a-1):
        if a % i == 0:
            lst.append(i)

    return lst

N = input("자연수 N 입력: ")

for i in range(1, int(N)):
    if sum(divisor(i)) == i:
        print(i)

제곱근을 이용해서 효율적으로 하신다는데... 무슨말씀이신지 전 이해가 안가네요 ㅜㅜ

2020/11/26 16:12

안상원

peerr=int(input("write your number : "))

for i in range(1,peerr+1,1):

  a=[]

  k=0

  for j in range(1,i,1):

    if i%j==0:

      k=k+j

  if k==i:

    print("{0} : This number is Perfect Number".format(i))

2020/11/27 20:45

전준혁

import java.util.ArrayList;
import java.util.Scanner;

public class pro7 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.println("범위를 입력하시오.");
        int a = sc.nextInt();

        ArrayList<Integer> re = new ArrayList<Integer>();
        for(int j=1; j<a; j++) {
            int sum = 0;
            for(int i=1; i<j; i++) {
                if(j%i==0) {
                    sum += i;
                }
            }
            if(sum==j)
                re.add(j);
        }
        for(int i=0; i<re.size(); i++)
            System.out.println(re.get(i));
        sc.close();
    }

}

2020/12/09 22:29

이정섭

def yaksu(num):
    c = 2
    yakarr = [1]
    while 1:
        if(num <= c):break
        elif(num % c == 0):
            if(c < (num //c)):
                yakarr.append(c)
                yakarr.append(num // c)
            elif(c == (num // c)):
                yakarr.append(c)
                break
            else: break
        c += 1
    return yakarr

n = int(input())
for i in range(2, n+1):
    result = yaksu(i)
    if(i == sum(result)): print(i, end = " ")

윤태호님 아이디어를 보고 짜봤지만 계산수를 더 줄일수있었다..

2020/12/15 18:22

guma go

n = int(input("자연수 n을 입력하세요. :"))

for i in range(2, n+1):
    temp = []
    for j in range(1, i):
        if i % j == 0:
            temp.append(j)
    if sum(temp) == i:
        print(i, temp)

파이썬으로 작성했습니다.

2부터 n까지 각각의 수(i)에 대한 약수(j)의 리스트를 구하고 그 합이 각각의 수(i)와 같을 때만을 출력하는 코드입니다.

2020/12/21 13:19

임준혁

def pn(n):
    result = []
    for i in range(2,n+1):
        if sum([x for x in range(1,i) if i%x==0])==i:
            result.append(i)
    return result

2020/12/23 16:03

hankyu

num = int(input("자연수 N을 입력하세요:"))

for i in range(1, num + 1):
    total = 0
    for j in range(1, i):
        if i % j == 0:
            total += j
    if total == i:
        print(i)

2021/01/07 14:02

코딩뚜

def func(a) :
    result = []

                                #약수를 담을 그릇
    for x in range(2,a) :
        num = []
        for y in range(1,x):
            if x % y == 0 :
                num.append(y)   #num에 약수를 넣었고

        if sum(num) == x:
            result.append(x)

    return result               #result값은 N이하의 완전수 list 혹은 empty

print(func(10000))

2021/01/09 22:43

­장태호 / 학생 / 원자핵공학과

Python Code

Num=int(input("Enter the Number: "))
answer =[]

for i in range(1, Num+1):
    sumNum =0
    for j in range(1,i):
        if i%j ==0:
            sumNum += j

    if sumNum == i :
        answer.append(i)

print("Perfect Number(s): ", end="")
print(*answer)

2021/01/10 20:10

DPark

파이썬으로 약수를 구하는 반복문을 이용해서 만들었습니다.

N = int(input('자연수 입력\n'))

perfect_num = []
for i in range(1, N+1):
    divisors = []
    for j in range(1, i):
        if i%j == 0:
            divisors.append(j)
    if sum(divisors) == i:
        perfect_num.append(i)

print(perfect_num)
근데 이것도 누가 했네

2021/01/16 10:40

빅도와 루돌프의 일상

result = []
def test(num):
    for i in range(1,num+1):
        count = 0
        for j in range(1,i):
            if i % j ==0:
                count += j
        if i == count:
            result.append(i)
    print(result)

2021/01/19 12:00

김지원

NUM = int(input("자연수를 쓰세요"))
A = []

for i in range(1,NUM+1):
    sum=0
    for a in range(1,i):
        if i%a==0:
            sum+=a
    if i == sum:
        A.append(i)

2021/01/26 20:42

fox.j

n = int(input('숫자 입력: '))


def complete_number(x):
    div = [i for i in range(1, x) if x % i == 0]
    return True if sum(div) == x else False

for i in range(1, n+1):
    if complete_number(i):
        print(i)

2021/02/01 16:00

Ha

N = input('Number? :')
N = int(N)
Num_list = []

for i in range(1,N+1):
    sum = 0
    for j in range(1,i):
        if i%j == 0:
            sum += j
    if sum == i:
        Num_list.append(i)
print(Num_list)

2021/02/02 08:27

서해원

import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        System.out.print("자연수 >> ");

        while (true) {

            int n = s.nextInt();
            if (n >= 1)
                numbersLessThan(n);
            else {
                System.out.println("error");
                break;
            }

            System.out.println();
            System.out.print("자연수 >> ");
        }

        s.close();
    }

    public static int[] getDivisors(int n) {
        int i = 1;
        int count;
        for (count = 0; i < n; i++) {
            if (n % i == 0)
                count++;
        }

        i = 1;
        int[] result = new int[count];
        for (int index = 0; i < n; i++) {
            if (n % i == 0) {
                result[index] = i;
                index++;
            }
        }

        return result;

    }

    public static boolean isPerfect(int n) {
        int[] divisors = getDivisors(n);

        int sum = 0;
        for (int i = 0; i < divisors.length; i++)
            sum += divisors[i];

        if (sum == n)
            return true;
        else
            return false;
    }

    public static void numbersLessThan(int n) {
        for (int i = 1; i <= n; i++) {
            if (isPerfect(i))
                System.out.print(i + " ");
        }
    }
}

2021/02/03 18:47

김용현

num = int(input())
for i in range(1,num):
    sum = 0
    for k in range(1,i):
        if i%k == 0:
            sum += k

    if sum == i:
        print(f"입력받은 숫자는{num} 이며, 완전수는 {sum} 입니다.")

2021/02/06 15:05

개촙오

이제 점프 투 파이썬 걸음마 아장아장 하는 응애 나 애기 파이썬 수준 입니다.

처음엔 특정한 수가 완전수인지 판별하는 프로그램을 짰습니다. 그런데 요구하는 바는 n 이하의 모든 완전수를 나열하는 문제더군요. 그래서 for문에 for문을 겹쳐도 되나? 싶어서 시도해봤지만, 에러가 발생하거나 결과가 이상한듯 잘 안되더라구요.

그렇다고 기존에 만들어놓은 완전수판별기가 너무 아까워서 얘를 함수로 퉁 쳐버리고 이걸 계속 돌리는 프로그램으로 만들어봤습니다. 테스트로 10000을 넣어봤더니 정확히 6 28 496 8128 을 주면서 완전수 4개를 나열해주더라구요.

혹시 for 문에 for 문을 쓰는 방식으로 이 코딩을 완성할 수 있나요?

def perf(x):
    factors=[]
    for i in range(1,x) :
        if x%i==0:
            factors.append(i)
    return sum(factors)==x

n=int(input("정수를 입력하세요: "))
for i in range(1,n+1):
    if perf(i)==True:
        print(i)

2021/02/24 02:24

이동그람

n=int(input('자연수 입력'))

def find_yaksu(x):
    result=[]
    for i in range(1,x+1):
        if x % i == 0:
            result.append(i)
    return result

for i in range(1,n+1):
    a=find_yaksu(i)
    if sum(a)-a[-1] == i:
        print(i)

약수 구하는 알고리즘을 알면 쉽게 풀 수 있는 문제네요.

2021/02/26 11:13

최우진

Python입니다.

>>> def perfect(x):
...     return sum(filter(lambda a: x % a == 0, [i for i in range(1, x)])) == x
...
>>> perfect(6)
True
>>> perfect(7)
False
>>> def f(n):
...     for j in range(1, n + 1):
...         if perfect(j):
...             print(j)
...
>>> f(28)
6
28

2021/04/11 17:05

최용

def makeAns2(num2):
    def makeAns(num):
        ansList = [i for i in range(1, num + 1) if num % i == 0]
        return True if num == sum(ansList) - num else False

    ansList2 = [j for j in range(1, num2 + 1) if makeAns(j) is True]
    print(ansList2)

makeAns2(10000)

[6, 28, 496, 8128] 출력

2021/04/14 10:08

와장창

def CheckPerfNo(str_no):
    inp_no = int(str_no)
    division_list = []
    for i in range(1,inp_no):
        if inp_no%i == 0:
            division_list.append(i)
        else: 
            pass
    if sum(division_list) == inp_no:
        return True
    else:
        return False

inp_no = input("Type your input no:")

for i in range(1,int(inp_no)+1):
    if CheckPerfNo(i):
        print(i,end=' ')

2021/04/26 09:07

최태호

def complete_number(n):
    """N 이하의 모든 완전수를 출력하기"""
    complete_num = []
    for i in range(1, n+1):
        measure = {int(x) for x in range(1,i) if i%x == 0}
        if i == sum(measure):
            complete_num.append(i)
    print(n,f'이하의 완전수는', complete_num, '입니다.')

num = int(input('수를 입력하세요.: '))

complete_number(num)

2021/04/30 09:13

bravesong

초보 다운 초보의 답안입니다.

n = input('숫자를 입력하시오 =')
s = []
for i in range(1,int(n)+1):
    b = [ j for j in range(1,i) if i % j == 0]
    if sum(list(b))== i:
        s.append(i)
print(s)    

2021/05/07 23:33

최정호

def PerfectNumber(n):
    l = []
    for i in range(1,n):
        if n % i == 0:
            l.append(i)
    if sum(l) == n : print('Perfect Number!')
    else : print('no!')

2021/05/12 09:09

약사의혼자말

def perfect(n):
    a=[]
    b=[]
    for i in range(2, n):
        a=[]
        for j in range(1, i):
            if i%j==0:
                a.append(j)
        if i==sum(a):
            b.append(i)

    print(b)
n=int(input('n값을 입력하시오:'))
perfect(n)

2021/05/17 17:53

이정엽

num = int(input("자연수 입력 :"))

result = 0
answer = []

for x in range(1,num+1):

  for y in range(1,x):
    if x % y == 0:
      result += y

  if result == x:
    answer.append(x)

  result = 0

print(answer)

5

2021/05/28 10:04

jaesik

n=int(input('n이하 완전수 모두 구하기'))

a=[]
for number in range(1, n+1):
    sum_number=0

    for i in range(1, number):
        if number%i == 0:
            sum_number+=i
        elif number%i != 0:
            pass
    if sum_number==number:
        a.append(number)

2021/06/23 11:26

inkuk ju

n=int(input('자연수 입력'))
perfectNum=[]
for i in range(1,n+1):
    total=0
    for j in range(1,i):
        if i%j==0:
            total+=j
    if total==i:
        perfectNum.append(i)
print('완전수 : {}'.format(perfectNum))

2021/06/25 18:44

김민준

def divisor_num(num):#자기 자신을 제외한 양의 약수의 합 구하기
    i = 1
    sum = 0
    while i < num:
        if num % i == 0:
            sum += i
        i += 1
    return sum

def find_perfect_num(num):#완전수 찾기
    guess = divisor_num(num)
    if guess == num:
        return guess
    else:
        return None



def perfect_num_list():#완전수 리스트 만들기
    n = int(input("자연수 N을 입력하세요 : "))
    i = 1
    result = []
    for i in range(1, n + 1):
        if find_perfect_num(i) != None:
            result.append(find_perfect_num(i))
    return result

print(perfect_num_list())

2021/07/02 00:05

김준규

#codingdojing_completeNum_re

#자기자신을 제외한 모든 양의 약수들의 합이 자기자신이 되는 자연수.


N = eval(input('number: '))
resultList = []

for num in range(2, N+1):
    divisorSum = 0

    for i in range(1, num): #약수찾기
        if num%i == 0:
            divisorSum += i

    if divisorSum == num:   #완전수면
        resultList.append(num)

print(resultList)

#input : 10000
#output: [6, 28, 496, 8128]

resultList2 = []

for num in range(2, N+1):

    if sum(x for x in range(1,num) if num%x == 0) ==num:
        resultList2.append(num)

print(resultList2)


2021/07/09 16:11

Jaeman Lee

파이썬 3.810 으로 작성되었습니다..

# 완전수를 구하는 문제, python 3.8.10
N = input()


def complete_number(n):
    n = int(n)
    result = 0
    result_list = []
    for i in range(1, n + 1):
        for j in range(1, i):
            if i % j == 0:
                result += j
        if result == i:
            result_list.append(i)
        result = 0
    return result_list


print(complete_number(N))

2021/07/26 12:17

baek choi

result=[]
N=input()
for i in range(1,N+1):
    sum = 0 
    for j in range(1,i):
        if i%j==0:
            sum+=j
     if i==sum:
         result.append(i) 
print(result)

2021/08/08 23:28

Percy

def perfect(N):
  list_perfect = []
  for i in range(1,N+1):
    small_i = []
    for s in range(1, i):
      if i % s == 0:
        small_i.append(s)
    if sum(small_i) == i:
      list_perfect.append(i)

  print(list_perfect)



perfect(1000)

2021/08/12 04:38

김동현

a = int(input('숫자: '))
def number(c):
    e = []
    # c보다 작은 모든 수에 대해서
    for i in range(1, c+1):
        b = 0
        # i보다 작은 모든 수에 대해서
        for y in range(1,i):
            if i % y == 0:  # y가 i의 약수라면,
                b += y
        if i == b:  # 완전수라면
            e.append(i)
    return e    

print(number(a))


2021/08/13 15:41

서현준

n=int(input("자연수를 입력하세요:"))
perfect_number=[]
for i in range(1,n+1):
    sum=0
    for j in range(1,i):
        if i%j==0:
            sum+=j
    if sum==i:
        perfect_number.append(i)
print(perfect_number)

2021/08/15 11:43

쥬쥬

num = int(input(""))
while True :
    dlist = [x for x in range(1,num) if num % x == 0]
    if sum(dlist) == num :
        print("%d"%(num))
    if num == 1: 
        break
    num -= 1

2021/08/23 16:22

//python

def abc(a):
    A=0
    for i in range(1, a):
        if a%i==0:
            A+=i
    if A==a:
        return a

def perfect(N):
    B=[]
    for i in range(1, N+1):
        if abc(i):
            B.append(i)
    print(B) 

2021/09/04 13:51

trim39r

user_input=int(input('자연수 : '))
result=[]
for num in range(2,user_input+1):
    sum=0
    for i in range(1,num):
        if num % i ==0:
            sum+=i
    if sum==num:
        result.append(num)
print(result)

2021/09/17 17:37

ninanino

# N이하의 완전수 구하는 문제 코딩
# 사용한 핵심 전략 : for 반복문, if 조건문

# 1. 변수 설정
natural_number=1000
perfect_number=[]

# 2. for문과 if문을 활용한 완전수 구하는 코드
for i in range(natural_number):
    divisor=[]
    for j in range(i):
        if (i+1)%(j+1)==0:
            divisor.append(j+1)
    a=0
    for k in range(len(divisor)):
        a+=divisor[k]
    if a==(i+1):
        perfect_number.append(i+1)
        print(f"완전수 {i+1}의 약수 : {divisor}")

# 3. 출력
print(f"** {natural_number}이하의 완전수 : {perfect_number} **")

2021/10/05 12:46

이성재

N = int(input('자연수를 입력하세요: '))

for i in range(1, N+1):
  # print(i)
  total = 0
  for j in range(1, i):
    if i%j == 0:
      total += j
  if i == total:
    print(total, end=' ')

2021/10/07 13:00

Charles

static void num(int x) {
        int sum;
        for (int i = 2; i < x; i++) {
            sum = 0;
            for (int j = 1; j < i; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }
            if (i == sum) {
                System.out.print("완전수 " + i + "의 약수는 ");
                for (int j = 1; j < i; j++) {
                    if (i % j == 0) {
                        System.out.print(j + " ");
                    }
                }
                System.out.println();
            }
        }
    }

    public static void main(String[] args) {
        num(1000);

    }

2021/10/24 14:15

박대현

r_number = int(input('해당 숫자 안의 자연수를 구합니다 : '))
small_number = []
for range_number in range(1,r_number+1):
    for i in range(1,range_number):
        if range_number % i == 0:
            small_number.append(i)

    if sum(small_number) == range_number:
        print(range_number)
    small_number = []    

2021/12/06 14:34

Jun

#자연수 a의 약수 구하기
def dev (a) :
    devs = []
    for i in range(1,a)   :
        if a%i == 0 :
            devs.append(i)
    return devs

# dev 함수를 이용해서 완전수 여부 판단 식
def comp (a) :
    devs = []
    for i in range(1,a)   :
        if a%i == 0 :
            devs.append(i)
    if a == sum(devs) :
        return True
    else :
        return False

# n 이하의 자연수중 완전수 여부 판단 식
def solution (n) :
    arr = []
    for i in range(1, n+1)  :
       if comp(i) == True :
           arr.append(i)

    return print(arr)

solution(int(input()))

2021/12/16 17:33

양캠부부

N = int(input("자연수 N : ")) # 자연수 N을 입력한다.

for i in range(1, N+1): # 1~N까지의 숫자를 확인한다.
    Sum = 0 # i와 비교하기 위한 변수 Sum을 초기화한다.
    for j in range(1, i): # 1~자기자신을 제외한 숫자를 확인한다.
        if i % j == 0: # 자기자신과 나누었을때 몫이 0이면 약수이다.
            Sum += j # 약수인 경우 더해준다.
    if Sum == i: # 더해준 값이 자기자신과 같은지 확인한다.
        print('i : ' + str(i)) # 같은 경우 완전수이므로 출력한다.

2022/01/12 16:00

ㅎㅎ

def judge_perfect_number(n):
    li = []
    for i in range(1,n):
        if n % i == 0:
            li.append(i)
    if sum(li) == n:
        return True
    else:
        return False

def PN_add(n):
    if judge_perfect_number(n) == True :
        PN_list.append(n)

PN_list = []

n=int(input('input the number'))
for i in range(1,n):
    PN_add(i)

print(PN_list)

2022/01/21 15:30

로만가

// Rust

use std::collections::HashSet;

fn main() {

let limit: u32 = 10000;
for i in 2..=limit {
    if divisors(i).into_iter().sum::<u32>() == i * 2 {
        println!("{} is complete numer", i);
    }
}

}

fn divisors(n: u32) -> HashSet {

let mut set: HashSet<u32> = [1, n].into_iter().collect();
for i in 2..n {
    if n % i == 0 {
        if !set.insert(i) || !set.insert(n / i) {
            return set
        }
    }
}
set

}

2022/01/26 11:33

JW KIM

def factor(a):
    f=[]
    for i in range(1,a//2+1):
        if (a/i)%1==0:
            f.append(i)
    return sum(f)

def perfect(b):
    if factor(b)==b:
        return b
    else:
        return 0
sum_per=0
n= input('자연수를 입력하시오 :')
print('입력한 자연수보다 작은 모든 완전수의 합은')

for i in range(1,int(n)+1):
    sum_per+=perfect(i)
print(sum_per)

2022/03/01 21:00

코딩초보박영규

n = int(input("자연수를 입력하세요:"))
result = 0
for i in range(1,n+1):
    for j in range(1,i):
        if i%j==0:
            result+=j
    if result == i:
        print(result)
    result=0

2022/03/08 13:00

mintou

def find_complete_num(num):
    for i in range(2, num + 1):
        divisor = [k*(i%k == 0) for k in range(1, round(i/2 + 1))]
        if sum(divisor) == i: print(i, end = '\t')

num = input("숫자를 입력하세요 : ")
find_complete_num(int(num))

범위 줄이는것만 참고했습니다.

2022/03/08 16:13

고양이

final_list = []
input_val = int(input("정수입력:"))

for i in range(1,input_val+1):
    result_list = []
    total = 0
    #약수 구하기
    for j in range(1, int(i**1/2)+1):
        if(i%j == 0):
            result_list.append(j)

    #약수들의 합
    for j in result_list:
        total += j

    if total == i:
        print(str(total)+" 약수:"+str(result_list))
        final_list.append(i)

print("완전수"+ str(final_list))

2022/04/01 11:12

seolgyung jeong

n=int(input())
x=1
while True:
    if x == n :
        break
    if n % x == 0 : 
        print(x)
    x+=1

2022/04/04 16:27

강민제

a=int(input("#")) su=0 for i in range(1,a): if a%i==0: su+=i if su==a: print("yes")

2022/04/11 16:25

yunjae

def getDivisor(n):
    divisorList = []
    for i in range(1,n):
        if n % i ==0:
            divisorList.append(i)
    return divisorList

num = int(input(':'))

print([x for x in range(1, num + 1) if sum(getDivisor(x)) == x])

2022/04/24 19:02

고구마츄

package com.algorithm.algorithmpractice.dojang;

import java.util.*;

public class PerfectNumber {
    public static void main(String[] args) {
        int input = 1000000;
        List<Integer> perfect = new ArrayList<Integer>();
        for (int i = 1; i < input + 1; i++) {
            Set<Integer> inputSet = new HashSet<>();
            for (int j = 1; j <= Math.sqrt(i); j++) {
                if(i % j == 0){
                    inputSet.add(j);
                    inputSet.add(i/j);
                }
            }
            int[] totalArr = new int[1];
            inputSet.forEach(elem->{
                totalArr[0] += elem;
            });
            if(i == totalArr[0]/2){
                System.out.println(i);
            }
        }
    }
}

2022/05/02 20:05

inkuk ju

n=int(input("#"))
def wan(n):
    li=[]
    for i in range(n):
        sum=0
        for j in range(1,i):
            if i%j==0:
                sum+=j
        if sum==i:
            li.append(i)
    return(li)
print(wan(n))

2022/05/07 18:31

yunjae

def perfect_num(N):
  perfect_number_list = []
  for i in range(2,N+1):
    sum = 0
    for k in range(1,i):
      if i%k == 0:
        sum += k
    if sum == i:
      perfect_number_list.append(str(i))
  print(N,"이하의 모든 완전수는",','.join(perfect_number_list),"이다.")

2022/05/27 12:11

이승훈

자바로 풀어 봤습니다.

import java.util.Scanner;
import java.util.ArrayList;

public class TestMain {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<Integer> storage = new ArrayList<>();
        ArrayList<Integer> perfectNumbers = new ArrayList<>();

        int N, sum=0;

        // 입력
        while(true) {
            System.out.println("자연수 N을 입력하시오:");
            N = scan.nextInt();

            if(N<1) {
                System.out.println("잘못 입력하셨습니다.\n");
            }else {
                break;
            }
        }

        // 완전수 찾기
        for(int i=1; i<=N; i++) {
            // i의 약수(본인 제외) 찾기
            for(int j=1; j<i;j++) {
                if(i%j==0) {
                    storage.add(j);
                }
            }

            // i의 약수들의 총합
            for(int k=0; k<storage.size(); k++) {
                sum += storage.get(k);
            }

            // 완전수 판별
            if(sum == i) {
                perfectNumbers.add(i);
            }

            sum=0;
            storage.clear();
        }

        System.out.println(String.format("\n1 ~ %d까지 완전수는 다음과 같다.\n\n", N)+perfectNumbers);
    }
}

2022/06/07 17:07

유로

N=int(input())
c=[]
for i in range(1,N+1):
  b=[]
  for j in range(1,i):
    if i%j==0:
      b.append(j)
  if sum(b)==i:
    c.append(i)
print(c)

2022/06/12 06:45

Jack Maker

sum = 0
n= 1000
for i in range(1,n+1):
    for j in range(1,i):
        if i %j ==0:
            sum +=j

    if sum == i:
        print('완전수 {:4d}'.format(i))
    sum =0

2022/06/17 14:41

준희

def Perfect_number(x):
    number_list = []
    for i in range(1, x):
        if x % i == 0:
            number_list.append(i)

    return number_list

commend = int(input("x의 값을 입력하시오 : "))

select_number = Perfect_number(commend)

select_number_sum = sum(select_number)

if select_number_sum == commend:
    print(f"{commend}는 완전 수 입니다.")

else:
    print(f"{commend}는 완전 수가 아닙니다.")

한줄로 만드시는분들 보면 신기하네요

2022/06/23 19:44

박종훈

def Perfect_num(a):
    result = 0
    list = []
    for n in range(4, a):   
        for i in range(2, a+1):
            if n % i == 0:
                result += n // i
        if result == n:
            list.append(result)
        result = 0
    return list
print(Perfect_num(29))

2022/06/27 20:23

박현준

오류코드까지 만들어 봤습니다.


def d(k):
    num = 0
    for ii in range(1, k):
        if k % ii == 0:
            num += ii
    return num


n = 0
input_n = 0
gold_n = ['없음']

for iii in range(4):
    if iii == 3:
        print('고만해라')
        exit(0)
    input_n = int(input('자연수 N을 입력하시오 : '))
    if input_n == 0:
        print('0을 입력하셨습니다.')
        continue
    elif input_n < 0:
        print('음수를 입력하셨습니다.')
        continue
    break

for i in range(1, input_n + 1):
    if i == d(i):
        if n == 0:
            gold_n.remove('없음')
            n = 1
        gold_n.append(i)
print('{}이하의 완전수는 {}'.format(input_n, gold_n))

2022/07/05 15:26

Tae Joo

def perfect(n):
  b = []
  for j in range(1, n+1):
    a = []
    for i in range(1, j):
      if j%i == 0:
        a.append(i)
    if sum(a) == j:
      b.append(j)
  print(b)

#perfect(500)
#[6, 28, 496]

2022/07/21 09:08

John

from math import sqrt

def isperfect (n):
    if n == 1:
        return False
    sum = 0
    for i in range(1, int(sqrt(n))+1):
        if n % (i) == 0:
            sum += i + n/i

    sum -= n

    if n == sum:
        return True
    else:
        return False

while True:
    Num = input("자연수 N을 입력하세요 : ")
    if Num.isdecimal() == True and int(Num) > 0:
        break
    else:
        print("자연수 N을 다시 입력하세요.")

Num=int(Num)

for i in range(1, Num+1):
    if isperfect(i) == True:
        print(i, end=" ")

2022/07/28 16:18

김준성

N = 1000

for x in range(1,N+1):
    s = sum(i for i in range(1,x) if x%i ==0)
    if x == s:
        print(x)

2022/07/29 08:55

JC YUN

python

num = int(input("자연수를 입력하시오: "))
perfect = []
temp = []

for x in range(2,num+1):
    for i in range(1,x): #약수 구하기
        if x%i == 0:
            temp.append(i)

    if sum(temp) == x: #완전수인지 판별
        perfect.append(x)

    temp = []

print(perfect)

2022/08/23 10:46

세라

  1. N값을 입력
  2. 1~N까지 차례대로 수행함
  3. 약수들을 먼저구함
  4. 해당 약수의 합이 진행되는 수와 같다면 compleNum에 투입.
  5. compleNum 출력.
private static ArrayList<Integer> completeNum(int num) {        
    ArrayList<Integer> compleNum = new ArrayList<>(); //최종완전수

        for(int i=1; i<=num; i++) {
            ArrayList<Integer> numAL = new ArrayList<Integer>(); //약수들
            int sum=0; 
            for(int j=1; j<i; j++) {
                if(i%j == 0) {
                    numAL.add(j);
                }
            }

            for(int k : numAL) {
                sum += k;
            }

            if(sum == i) {
                compleNum.add(i);
            }

        }

        return compleNum;


    }

2022/09/14 18:15

서영재

n = int(input())
for i in range(1, n + 1):
    if i == sum([n for n in range(1, i) if i % n == 0]):
        print(i, end=' ')

2022/10/02 02:22

봄과일

Python. 알고 있는 함수 기능이 매우 적어서..코드가 길어질 수밖에 없는 듯합니다. 많이 공부해야겠어요.

#perfectNumber
def perfect_numbers():
    aliquot=[]
    n=int(input("임의의 수를 입력하세요. : "))
    for i in range(1,n): #입력받은 수 이하의 모든 수에 대한 완전수 여부 판별
        temp=[] #완전수 여부를 판별하기 위해 약수를 임시로 모아 두는 리스트(아래 완전수 판별 함수 실시마다 비워줄 것)
        for j in range(1,i):
            if i%j==0: 
                temp.append(j) #약수를 모아 리스트 temp에 추가
            else:
                pass
        if sum(temp)==i: 
            aliquot.append(i) #약수의 합이 제시된 수와 동일한지(즉, 완전수인지) 판별 후 완전수는 결과 리스트에 추가
    print(aliquot)        

perfect_numbers()     

2022/10/06 15:57

Frye 'de Bacon

n = input("입력: ")

완전수 = []

for 자연수 in range(1, int(n)):
    약수 = []
    for i in range(1, 자연수+1):
        if 자연수 % i == 0:
            약수.append(i)
    if sum(약수)-자연수 == 자연수:
        완전수.append(자연수)

print(완전수)

2022/11/09 20:28

­류예린

package level1;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.stream.IntStream;

public class PerfectNumber_539 {
//  자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
//  예를 들면, 6과 28은 완전수이다.
//  6=1+2+3 // 1,2,3은 각각 6의 약수
//  28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
//  입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.

    public static int getFactorSum(int num) {
        int result = 0;
        if(num == 0 || num == 1) {return 0;}
        for (int i = 0; i < num; i++) {
            if (i == 0) {continue;}
            if (num % i == 0) {result += i;}
        }

//      HashSet<Integer> set = new HashSet<Integer>();
//      for (int i = 2; i < num; i++) {
//          if(num % i == 0 && set.add(i)) {
//              result += i;
//          }
//      }

        return num == result ? result : 0;
    }

    public ArrayList<Integer> isPerfectNums(int num){
        ArrayList<Integer> result = new ArrayList<Integer>();
        IntStream.range(0, num).map(PerfectNumber_539::getFactorSum).forEach(result::add);
//      IntStream.range(0, num).map(v -> v == getFactorSum(v) ? v : 0).filter(v -> v !=0).forEach(result::add);
        return result;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int inputNum = sc.nextInt();
        PerfectNumber_539 isP = new PerfectNumber_539();
        isP.isPerfectNums(inputNum).stream().filter(v -> v != 0 && v != 1).forEach(System.out::println);

    }
}

2023/01/23 00:03

Miracle Lee

// num= int(input("숫자를 입력하시오 : "))

// print([x for x in range(1, num+1) if x==sum(y for y in range(1, x) if x%y==0)])

추천 많이 받은 파이썬 풀이를 보고 같은 방식으로 구현해봤습니다

        Scanner sc = new Scanner(System.in);
        int inputNum = sc.nextInt();
        IntStream.range(1, inputNum+1).filter(v -> v == IntStream.range(1, v).filter(v2 -> v%v2==0).sum()).forEach(System.out::println);

2023/01/23 00:17

Miracle Lee

import math
result = []
sum = 0
num = int(input("숫자를 넣으시지: "))
num2 = math.floor(num/2)
for i in range(1,num2+1):
    if num % i == 0:
        result.append(i)

for jakja in result:
    sum += jakja
if sum == num:
    print("완~전수~")
else:
    print("불완~전수~")

2023/02/11 12:32

제작자

n=int(input("r:"))
alp=0
ddd=[]
for i in range(1,n):
    alp=0
    for p in range(1,i):
        if i%p==0:
            alp=alp+p
    if alp==i:
        print(i)


2023/03/09 19:59

dhwnstjr

intInput=int(input())

def perfactNum(iInput):
    for i in range(1,iInput+1):
        intSum=0#완전수 판별 초기화

        for j in range(1,i):
            if i%j==0:#약수 판별
                intSum+=j#완전수 판별기에 추가

        if intSum==i:#완전수 판별
            print(i,"은(는) 완전수")


perfactNum(intInput)

2023/03/10 18:45

Sol Song

JAVA

package chapter03; import java.util.Scanner;

public class PerfectNumber { public static void main(String[] args) { Scanner scn = new Scanner(System.in); System.out.println("자연수 N 입력"); int n = scn.nextInt(); int sum=0;

    for (int i = 6; i <= n; i++) {
        for (int j = 1; j < i; j++) {
            if (i%j==0) {
                sum+=j;

            }
        }
        if (sum==i) {
            System.out.print(sum+" ");                  
        }
        sum =0;
    }

}

}

2023/03/16 14:55

Do Il Yoon

n = int(input('완전수를 구하고자 하는 임의의 자연수 입력'))

def s_divisor(N):    # s_divisor : 약수 중 자신은 제외
    div =[]
    for i in range(1, N):
        if N % i == 0:
            div.append(i)
    return div 

comp_num = []
for i in range(1, n+1):
    if sum(s_divisor(i)) == i:
        comp_num.append(i)

print(comp_num)

2023/07/23 16:09

Dongyoon Kim

num = int(input("Enter Num:"))
pf = []
if num <= 2:
   print("Too Small !!!");quit()
for i in range(3,num+1):
   div = []
   for j in range(1,i):
      if i % j == 0:
         div.append(j)
      else:continue
   if sum(div) == i:
      pf.append(i)
   else:continue
print(pf)

2023/08/11 17:33

siu yoon

N= int(input('자연수를 입력하세요'))
def get_yaksu(num):
    yaksus = []
    for n in range(1, int(num/2)+1):
        if num % n == 0:
            yaksus.append(n)
    return yaksus

result = []
for n in range(1, N+1):
    if sum(get_yaksu(n)) == n:
        result.append(n)

print(result)

2023/08/12 23:12

이광진

a = int(input("원하는 자연수를 입력해주세요 :")) def yacsu(n): totalyacsu = [] for i in range(1,n): if n%i == 0: totalyacsu.append(i) return totalyacsu

what_we_want=[] for i in range(1,a+1): sum=0 for j in yacsu(i): sum += j if sum == i: what_we_want.append(i)

print(what_we_want)

2023/10/03 13:41

TOP CODE

def sumOfDiv(N):
    sd = 0
    for n in range(1, N):
        if N % n == 0:
            sd += n
    return sd

num = int(input("숫자를 입력하시오 : "))
res = []
for N in range(1, num):
    if N == sumOfDiv(N):
        res.append(N)
print(res)

2023/10/21 21:37

insperChoi

n = int(input())
perfectnum = []
for i in range(1, n+1):
    aliquot = []
    for k in range(1, i):
        if i % k == 0:
            aliquot.append(k)
    if sum(aliquot) == i:
        perfectnum.append(i)
print(perfectnum)

2024/02/03 17:04

리리

num = int(input("자연수 N을 입력하세요. : "))
perfect=[]
for i in range(1,num+1):
    sum = 0
    for j in range(1,i):
        if i % j == 0:
            sum = sum + j
    if sum == i:
        perfect.append(i)
print(perfect)

2024/02/22 19:43

버거킹

N = int(input())
nums = []
for i in range(1,N+1):
    sums=0
    for m in range(1,i+1):
         if i%m == 0:
             sums +=m
     if i == sums:
     nums.append(i)
print(nums)


2024/07/03 23:46

정채원

def perfect():
    results = []
    N = int(input("Enter the number : "))

    for i in range(2,N+1):
        divisors = []

        for j in range(1,i):
            if i % j == 0 :
                divisors.append(j)

        if sum(divisors) == i :
            results.append(i)

    return results

2024/12/13 04:56

Orange

def perfNum(x):
  sumNum = 0
  for i in range(1, x+1):
    if x % i == 0:
      sumNum += i

  if sumNum == x:
    return True
  else:
    return False

n = int(input("숫자를 입력하세요: "))

divi = []

for i in range(1, n+1):
  if perfNum(i) == True:
    divi.append(i)

print(divi)

2025/02/21 10:54

Dasol Lee

n = int(input("입력하시오: "))
perfects = []

for i in range(2, n + 1):
    divisors_sum = 0
    for k in range(1, i):              # 1 ~ i-1
        if i % k == 0:
            divisors_sum += k
    if divisors_sum == i:
        perfects.append(i)

print(perfects)

2026/01/02 17:35

김성훈

def yak(x):
    temp = []
    for i in range(1, x):
        if x % i == 0:
            temp.append(i)
    if x == sum(temp):
        return x

s = int(input())
for i in range(1, s + 1):
    result = yak(i)
    if result:
        print(result)

2026/05/05 00:55

우영재

목록으로