완전수 구하기

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

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

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

92개의 풀이가 있습니다. 1 / 10 Page

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;

}

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
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");
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
# 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
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#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

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

N

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

print(diviserlist)

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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)
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
#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;
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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)



※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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();
        }       

}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.


언어별 풀이 현황
전 체 x 92
기 타 x 19
java x 11
python x 33
cpp x 19
cs x 3
javascript x 2
matlab x 2
r x 1
scala x 1
ruby x 1