완전수 구하기

자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다. 예를 들면, 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

박 시우

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

183개의 풀이가 있습니다. 1 / 19 Page

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

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

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

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

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

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


}

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

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

풀이 작성

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

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


언어별 풀이 현황
전 체 x 183
python x 73
java x 32
기 타 x 37
php x 1
cpp x 24
cs x 6
javascript x 4
scala x 2
matlab x 2
r x 1
ruby x 1