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

수비주의

File #1

수의 특별한 의미를 부여하는 것을 수비주의라고 한다.

당신은 어떤 사건을 수사하기 위해 수비주의 클럽에 들어가야한다.

다만 이 클럽에 들어가기 위해서는 어떤 수를 입력받고 그 수가 어떤 수인지 알려주는 프로그램을 작성해야 한다.

문제) 양의 정수 n을 입력받고 그 수가 과잉수인지 완전수인지 부족수인지 출력하시오.

예)

6
20
15

답)

완전수입니다

과잉수입니다

부족수입니다

File #2

우여곡절 끝에 당신은 수비주의 클럽에 들어가게 되었다.

그러다 범인을 잡을 수 있는 파일을 알게되고,

그 파일에 위치가 회장에 컴퓨터에 있다는 것도 알게 되었다.

그 정보가 확실한지는 모르겠지만 달리 방법이 없는 터라 그 컴퓨터에 접속해야한다.

하지만 그 컴퓨터에는 암호가 있었고, 정해진 시간이 있는지라 그 암호를 프로그램을 이용해 입력해야한다.

문제) 어떤 수를 입력받고 진약수들의 합과 그 수가 친화수인지 혼약수인지 일반 수인지 출력하시오.

그러나 그 수가 혼약수이면 (친화수들의 합 -1)을 출력해야 한다.

예)

220

75

20

출력)

284, 친화수입니다.

48, 혼약수입니다.

22, 일반 수입니다.


진약수 : 어떤 수의 자기자신을 제외한 약수 (예 - 20의 진약수는 1,2,4,5,10)

완전수 : 진약수들의 합이 자기 자신인 수

과잉수 : 진약수들의 합이 자기 자신보다 큰 수

부족수 : 진약수들의 합이 자기 자신보다 작은 수

친화수 : 두 수의 쌍이 있어, 어느 한 수의 진약수를 모두 더하면 다른 수가 되는 수

혼약수 : 두 수의 쌍이 있어,( 어느 한 수의 진약수 - 1)를 모두 더하면 다른 수가 되는 수

2018/06/12 22:13

김영성

26개의 풀이가 있습니다.

단순무식한 방법입니다.

public class 수비주의 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        int count = 0;
        for(int i =1; i<num; i++) {
            if(num%i==0) {
                count+=i;
            }
        }
        if(count==num) {
            System.out.println("완전수입니다");
        }
        else if(count>num) {
            System.out.println("과잉수입니다");
        }
        else {
            System.out.println("부족수입니다");
        }
        //여기까지 File #1
        int num1 = scan.nextInt();
        int count2 = 0;
        for(int i=1; i<num1; i++) {
            if(num1%i==0) {
                count2+=i;
            }
        }
        int count3 = 0;
        for(int j=1; j<count2; j++) {
            if(count2%j==0) {
                count3+=j;
            }
        }
        if(count3==num1) {
            System.out.println(count2+", 친화수입니다");
            System.exit(0);
        }

        int count4 = 0;
        for(int i=1; i<num1; i++) {
            if(num1%i==0) {
                count4+=i;
            }
        }
        int count5 = count4-1;
        int count6 = 0;
        for(int j=1; j<count5; j++) {
            if(count5%j==0) {
                count6+=j;
            }
        }
        if((count6-1)==num1) {
            System.out.println(count5+", 혼약수입니다");
        }
        else {
            System.out.println(count2+", 일반수입니다");
        }
    }
}

2019/12/14 16:47

big Ko

파이썬 3.6.5

n = int(input('임의의 자연수를 입력하세요 : '))
x = n - sum(i for i in range(1, n) if not n % i)
if x < 0: print('과잉수입니다.')
else: print(('부족수입니다.', '완전수입니다.')[not x])

2018/06/13 19:41

Hyuk

def Jin(x):
    result=0
    for i in range(x):
        if i ==0:
            continue
        if x%i==0:
            result+=i
    return(result)

num = int(input("숫자를 입력하세요."))
jin = Jin(num)
if num == jin:
    print("완전수 입니다.",)
elif num > jin:
    print("부족수 입니다.")
else:
    print("과잉수 입니다.")

2018/06/14 17:51

Seohyun Choi

맨 윗줄 for i in range(1,x):로 바꾸시면 if i == 0: continue 란 부분을 없앨수 있지않을까요? - \일레기, 2018/06/16 22:14
#include <stdio.h>

int sumDivisorof(int num);

int main(int argc, char *argv[])
{
    int input;
    scanf("%d", &input);

    if (sumDivisorof(input) == input)
        printf("완전수입니다\n");
    else if (sumDivisorof(input) > input)
        printf("과잉수입니다\n");
    else
        printf("부족수입니다\n");

    return 0;
}

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

2018/06/14 21:22

구직중

#File 1
def check_num(n):
    common = []
    sum = 0
    for i in range(1,n):
        if n%i == 0:
            common.append(i)
    for j in common:
        sum += j
    if sum < n:
        print("부족수입니다.")
    elif sum == n:
        print("완전수입니다.")
    elif sum > n:
        print("과잉수입니다.")

num = int(input())
check_num(num)

#File 2
def jin_common(n):
    common = []
    sum_n = 0
    sum = 0
    for i in range(1,n):
        if n%i == 0:
            common.append(i)
    for j in common:
        sum_n += j

    common = []
    for k in range(1, sum_n):
        if sum_n%k == 0:
            common.append(k)
    for m in common:
        sum += m

    common = []
    sum_p = 0
    for p in range(1, sum_n-1):
        if (sum_n-1) % p ==0:
            common.append(p)
    for o in common:
        sum_p += o


    if sum == n:
        print("%d, 친화수입니다."%(sum_n))
    elif (sum_p-1) == n:
        print("%d, 혼약수입니다."%(sum_n-1))
    else:
        print("%d, 일반수입니다."%(sum_n))


jin_common(int(input()))

2018/06/16 22:43

\일레기

1. File_1

int main()
{

    int input = 0;
    int sum = 0;

    cin >> input;

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

    if (sum > input)
        cout << input << " : 과잉수 입니다" << endl;
    else if (sum < input)
        cout << input << " : 부족수 입니다" << endl;
    else
        cout << input << " : 완전수 입니다" << endl;

    system("pause > null");
    return 0;
}

2. File_2

int RealDividorSum(int max)
{
    int sum = 0;
    for (int i = 1; i < max; ++i)
    {
        if (max % i != 0)
            continue;

        hap += i;
    }

    return sum;
}


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

    int num = RealDividorSum(input);
    if (RealDividorSum(num) == input)
        cout << input << "은 " << num << "과 " << "친화수" << endl;

    else
    {
        int betrothed = RealDividorSum(num - 1) - 1;

        if (betrothed == input)
            cout << input << "은 " << num - 1 << "와 " << "혼약수" << endl;

        else
            cout << input << "은 " << "일반수" << endl;
    }

    system("pause > null");
    return 0;
}

2018/06/17 00:15

장민욱

Python

test1 = [6, 20, 15, 220, 75, 20]
#test1 = [75]
for t in test1:
    #진약수의 합
    jin = 0
    for i in range(1, t):
        if t % i == 0:
            jin += i
    if jin > t: print("{}는 과잉수입니다.".format(t))
    elif jin < t: print("{}는 부족수입니다.".format(t))
    else: print("{}는 완전수입니다.".format(t))

    pair = 0
    for i in range(1, jin):
        if jin%i == 0:
            pair += i
    if pair == t: print("{}, {}는 친화수입니다.".format(jin, t))
    else:
        pair = 0
        for i in range(1, jin-1):
            if (jin-1)%i == 0:
                pair += i
        if pair-1 == t: print("{}, {}는 혼약수입니다.".format(jin-1, t))
        else: print("{}, {}는 일반수입니다.".format(jin, t))

2018/06/19 14:51

Taesoo Kim

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

int main(int argc, char * argv[])
{
    int  i;
    int  n = atoi(argv[1]);
    int  sum = 0;

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

    if( sum == n )
    {
        printf("perfect number\n");
    }
    else if( sum > n )
    {
        printf("abundant number\n");
    }
    else
    {
        printf("defective number\n");
    }
}

2018/06/20 08:43

구름과비

File #1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int num = new Scanner(System.in).nextInt(), sum = 0;
        for (int i = 1; i < num / 2 + 1; i++)
            if (num % i == 0)
                sum += i;
        System.out.println((num == sum ? "완전" : num > sum ? "부족" : "과잉") + "수입니다");
    }
}

File #2

import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        int num = new Scanner(System.in).nextInt();
        System.out.print((Check(Check(num, 0), 0) == num ? Check(num, 0) + ", 친화"
            : Check(Check(num, 1), 1) == num ? Check(num, 1) + ", 혼약" 
            : Check(num, 0) + ", 일반") + "수입니다");
    }

    private static int Check(int num, int a) {
        int sum = 0;
        for (int i = 1; i < num / 2 + 1; i++)
            if (num % i == 0)
                sum += i;
        return sum - a;
    }
}

2018/06/21 18:35

김지훈

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()
        for x in range(1, int(self.num ** 0.5)+1):
            if not(self.num%x):
                result |= {x, int(self.num/x)}
        return result

    def isperfect(self):
        sd = sum(sorted(self.divisor())[:-1])
        return '완전수' if sd == self.num else '과잉수' if sd > self.num else '부족수'

    def isnomal(self):
        sd = sum(sorted(self.divisor())[:-1])
        return (sd,'완전수') if sd == self.num else (sd-1,'혼약수') if sum(sorted(calc_divisor(sd-1).divisor())[1:-1]) == self.num else (sd,'친화수') if sum(sorted(calc_divisor(sd).divisor())[:-1]) == self.num else (sd,'일반수')


if __name__ == "__main__":
    while 1:
        n = input('입력(종료는 엔터): ')
        if not n: break
        c = calc_divisor(int(n))
        print('{}은 {}입니다.'.format(n, c.isperfect()))
        print('{}은 {}입니다.'.format(n, c.isnomal()))


입력(종료는 엔터): 6
6은 완전수입니다.
6은 (6, '완전수')입니다.
입력(종료는 엔터): 20
20은 과잉수입니다.
20은 (22, '일반수')입니다.
입력(종료는 엔터): 15
15은 부족수입니다.
15은 (9, '일반수')입니다.
입력(종료는 엔터): 220
220은 과잉수입니다.
220은 (284, '친화수')입니다.
입력(종료는 엔터): 75
75은 부족수입니다.
75은 (48, '혼약수')입니다.
입력(종료는 엔터): 20
20은 과잉수입니다.
20은 (22, '일반수')입니다.
입력(종료는 엔터):

2018/06/26 06:53

Creator

JavaScript

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

var input1 = [6, 20, 15];
for (var key in input1) {
    var n = input1[key];
    var s = sumProperFactors(n);
    if (s == n) console.log("완전수입니다.");
    else if (s > n) console.log("과잉수입니다.");
    else console.log("부족수입니다.");
}

var input2 = [284, 75, 20];
for (var key in input2) {
    var n = input2[key];
    var s = sumProperFactors(n);    
    if (sumProperFactors(s) == n) console.log(s + ", 친화수입니다.");
    else if (sumProperFactors(s - 1) - 1 == n) console.log((s - 1) + ", 혼약수입니다.");
    else console.log(s + ", 일반수입니다.");
}

2018/07/19 22:38

Noname

def mea(n):
    mes = 0
    for x in range(1,int(n/2)+1):
        if n%x == 0:
            mes += x
    return mes
def Pern(n):
    mes = mea(n)
    return '완전수' if mes == n else '과잉수' if mes > n else '부족수'
def aff(n):
    mes = mea(n)
    return '친화수' if n == mea(mes) else '혼약수' if mes-1 == mea(mes-1)-1 else '일반수'

2019/01/13 15:07

김영성

#진약수

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


num1, num2 = map(int, input().split())

def find_1(num):
    if sum(divisor(num)) == num:
        return '완전수입니다'
    elif sum(divisor(num)) > num:
        return '과잉수입니다'
    else:
        return '부족수입니다'

def find_2(num):
    another_num = sum(divisor(num))

    if sum(divisor(another_num)) == num:
        return another_num, '친화수입니다'
    if sum(divisor(another_num - 1)) - 1 == num:
        return another_num - 1, '혼약수입니다'
    else:
        return another_num, '일반수입니다'

print(find_1(num1))
print('{}, {}'.format(*find_2(num2)))

2019/02/18 15:57

D.H.

C#

using System;
using System.Collections.Generic;
using System.Linq;

namespace CD173
{
    internal class Program
    {
        private static void Main()
        {
            Numerology testCase;
            // --- File #1 ---
            testCase = new Numerology(6);
            testCase.PrintFile1Status();
            testCase = new Numerology(20);
            testCase.PrintFile1Status();
            testCase = new Numerology(15);
            testCase.PrintFile1Status();
            // --- File #2 ---
            testCase = new Numerology(220);
            testCase.PrintFile2Status();
            testCase = new Numerology(75);
            testCase.PrintFile2Status();
            testCase = new Numerology(20);
            testCase.PrintFile2Status();
        }
    }

    internal class Numerology
    {
        private readonly int TargetNumber;

        public Numerology(int number)
        {
            TargetNumber = number;
        }

        public void PrintFile1Status() // File #1 상태 출력
        {
            int sum = SumProperDivisors(TargetNumber);
            string status = TargetNumber == sum ? "완전수" :
                TargetNumber > sum ? "부족수" : "과잉수";
            Console.WriteLine($"{status}입니다.");
        }

        public void PrintFile2Status() // File #2 상태 출력
        {
            int sum = SumProperDivisors(TargetNumber);
            string status = string.Empty;
            if (IsAmicable(TargetNumber))
            {
                status = $"{sum}, 친화수";
            }
            else if (IsQuasiAmicable(TargetNumber))
            {
                status = $"{sum - 1}, 혼약수";
            }
            else
            {
                status = $"{sum}, 일반수";
            }
            Console.WriteLine($"{status}입니다.");
        }

        private static bool IsAmicable(int number) // 친화수 판단
        {
            var tmpVal = SumProperDivisors(number);
            return number == SumProperDivisors(tmpVal);
        }

        private static bool IsQuasiAmicable(int number) // 혼약수 판단
        {
            var tmpVal = SumProperDivisors(number) - 1;
            return number == SumProperDivisors(tmpVal) - 1;
        }

        private static int SumProperDivisors(int number) // 진약수 합
        {
            var properDivisors = new HashSet<int>() { 1 };
            for (int i = 2; i * i <= number; i++)
            {
                if (number % i == 0)
                {
                    properDivisors.Add(i);
                    properDivisors.Add(number / i);
                }
            }
            return properDivisors.Sum();
        }
    }
}

2019/03/29 14:00

mohenjo

N = int(input())
check = False
def File(N):
    Nint = 0
    for i in range(1,N):
        if N % i == 0:
            Nint += i
    if N == Nint:
        print("완전수입니다")
    if N < Nint:
        print("과잉수입니다")
    if N > Nint:
        print("부족수입니다")
def File2(N):
    other1 = 0
    other2 = 0
    check = 0
    check1 = 0
    finishcheck = 0
    for i in range(1,N):
        if N % i == 0:
            other1 += i
    other2 = other1 - 1
    for i in range(1,other1):
        if other1 % i == 0:
            check += i
        if 1 < i and i <= other2-1:
            if other2 % i == 0:
                check1 += i
    if check == N:
        print(other1,"친화수입니다.")
        finishcheck = 1
    if check1 == N:
        print(other2,"혼약수입니다.")
        finishcheck = 1
    if finishcheck == 0:
        print(other1,"일반 수입니다")

File(N)
File2(N)

2020/02/11 17:55

BlakeLee


def fun(n):  # 진약수 구하는 함수
    result = []
    for i in range(1,n):
        if n % i == 0:
            result.append(i)
    return result

value = int(input("숫자를 입력 : "))

print("File_1")
if value == sum(fun(value)):
    print("완전수 입니다.")
elif value < sum(fun(value)):
    print("과잉수 입니다.")
elif value > sum(fun(value)):
    print("부족수 입니다.")


print("File_2") 
if value == sum(fun(sum(fun(value)))):
    print("친화수 입니다.")
elif value == sum(fun(sum(fun(value))-1))-1:
    print("혼약수 입니다.")
else :
    print("일반수 입니다.")


2020/03/02 22:36

semipooh

def jinyaksuhap(x):
    sum=0
    for i in range(1,x):
        if x%i==0:
            sum+=i
    return sum

a=int(input('n='))          
b=jinyaksuhap(a)

print ('1.')
if b==a:
    print ('완전수')
elif b>a:
    print ('과잉수')
else:
    print ('부족수')

print ('2.')
if a==jinyaksuhap(b):
    print (b,'친화수')
elif a==(jinyaksuhap(b-1)-1):
    print (b-1,'혼약수')
else:
    print (b,'일반수')

2020/04/21 01:49

Buckshot

<결과> n=6 1. 완전수 2. 6 친화수 n=20 1. 과잉수 2. 22 일반수 n=15 1. 부족수 2. 9 일반수 n=220 1. 과잉수 2. 284 친화수 n=74 1. 부족수 2. 40 일반수 n=20 1. 과잉수 2. 22 일반수 - Buckshot, 2020/04/21 01:50
def ss(num):
    n = []
    for i in range(1, int(num ** .5) + 1):
        if num % i == 0:
            n.append(i)
            if num // i != i:
                n.append(num // i)
    del n[1]
    return sum(n)

def file1(number):
    in1 = ss(number)
    if in1 == number: return in1, '완전수'
    elif in1 > number: return in1, '과잉수'
    else: return in1, '부족수'

def file2(number):
    in1 = ss(number)
    if number == ss(in1-1)-1: return in1-1, '혼약수'
    elif number == ss(in1): return ss(number), '친화수'
    else: return in1, '일반수'

if __name__ == '__main__':
    number = 75
    print(*file1(number))
    print(*file2(number))

2020/05/12 17:17

Hwaseong Nam

#file1
file1 = int(input())
yaksu1 = []
for i in range(1,file1):
    if n%i == 0:
        yaksu1.append(i)
    else:
        continue
if sum(yaksu1) == file1:
    print('완전수')
elif sum(yaksu1) <= file1:
    print('부족수')
else:
    print('과잉수')

#file2
file2 = int(input())
file2yaksu = []
for k in range(1,file2):
    if file2%k == 0:
        file2yaksu.append(k)
    else:
        continue
comparesu = sum(file2yaksu)
comparesuyaksu = []
for j in range(1,comparesu):
    if comparesu%j == 0:
        comparesuyaksu.append(j)
    else:
        continue
if sum(comparesuyaksu) == file2 and sum(file2yaksu) == comparesu:
    print('%d,친화수' %comparesu)
else:
    comparesuminus = sum(file2yaksu)-1
    comparesuminusyaksu = []
    for j in range(1,comparesuminus):
        if comparesuminus%j == 0:
            comparesuminusyaksu.append(j)
        else:
            continue 
    print(comparesuminusyaksu)
    if sum(comparesuminusyaksu)-1 == file2 and (sum(file2yaksu)-1) == comparesuminus:
        print('%d 혼약수'%comparesuminus)
    else:
        print('%d 일반 수'%comparesu)

2020/05/21 00:20

Money_Coding

def divisor(n):
    return [k for k in range(1,n) if n%k==0 ]


def numberSet1(n):
    if n == sum(divisor(n)):
        print("{}는 완전수입니다.".format(n))
    elif n < sum(divisor(n)):
        print("{}는 과잉수입니다.".format(n))
    elif n > sum(divisor(n)):
        print("{}는 부족수입니다.".format(n))


def numberSet2(n):
    if n == sum(divisor(n)):
        print("{}, 친화수입니다.".format(sum(divisor(n))))
    elif n < sum(divisor(n)):
        print("{}, 일반수입니다.".format(sum(divisor(n))))
    elif n > sum(divisor(n)):
        print("{}, 혼약수입니다.".format(sum(divisor(n))-1))


numberSet1(6)
numberSet1(20)
numberSet1(15)

numberSet2(220)
numberSet2(75)
numberSet2(20)

2020/12/01 18:48

김우석

def yac(n) : return sum([i for i in range(1,n+1) if n%i==0])-n

def file1(n) :
    if n==yac(n) : print('완전수')
    elif n<yac(n): print('과잉수')
    elif n>yac(n): print('부족수')

def file2(n) :
    m = yac(n)
    if n==yac(m) : print(f'{yac(n)} 친화수입니다')
    elif n==yac(m-1)-1 : print(f'{yac(n)-1} 혼약수입니다')
    else : print(f'{yac(n)} 일반수입니다')

file1(6)
file1(20)
file1(15) 

file2(220)          
file2(75)
file2(20)                                                                                                                                                                                                                                                                                                                                                                                                                                          

2021/06/07 16:38

약사의혼자말

def defensiveness(a):
    c = 0
    for i in range(1,a):
        if a%i == 0:
            c += i
    return c

if __name__ == '__main__':
    a = int(input())
    s = defensiveness(a)
    if s == a:
        print('완전수')
    elif s < a:
        print('부족수')
    else:
        print('과잉수')
    K = 0
    for w in range(1,s):
        if s%w == 0:
            K += w
    if K == a:
        print('{0},친화수'.format(s))
    else:
        F = 0
        m = s-1
        for r in range(1,m):
            if m%r == 0:
                F += r
        if m == a:
            print('{0},혼약수'.format(m))
        else:
            print('{0},일반수'.format(s))

2021/11/05 20:45

서현준

n = int(input("입력하시오"))


arr = [i for i in range(1,n) if n%i==0]
a = sum(arr)
if a == n:
    print("완전수")
elif a>n:
    print("과잉수")
else:
    print("부족수")

File2의 문제는 설명이 애매모호합니다. '문제) 어떤 수를 입력받고 진약수들의 합과 그 수가 친화수인지 혼약수인지 일반 수인지 출력하시오.' 문제에서 어떤수 a와 그 a의 진약수의 총합(b)을 쌍으로 두고, 친화수 혼약수를 구하라는거 같은데

'친화수 : 두 수의 쌍이 있어, 어느 한 수의 진약수를 모두 더하면 다른 수가 되는 수'

위 친화수 조건에 따라 애초에 친화수가 되는 쌍으로 문제를 풀어야하네요 추가 부연설명이 필요해보입니다

2022/01/16 22:39

양캠부부

// Rust

fn natural_numbers() {

let vec = [220, 75, 20];
for n in vec {
    let mut sum = divisors(n).iter().sum::<u128>() + 1;
    let mut result = String::new();

    if divisors(sum).iter().sum::<u128>() + 1 == n {
        result = "친화수".to_string();
    } else if divisors(sum - 1).iter().sum::<u128>()==n {
        result = "혼약수".to_string();
        sum -= 1;}
    else { result = "일반수".to_string();}
    println!("{}: {} {}", n, sum, result);
}

} use std::collections::HashSet; fn divisors(n: u128) -> HashSet { // 1과 자신 제외

let mut set = HashSet::<u128>::new();
for i in 2..n {
    if n % i == 0 {
        if !set.insert(i) || !set.insert(n/i) { break; } }}
set

}

2022/01/30 09:42

JW KIM

혼약수 구하는 코드는 참조했습니다.

package org.javaturotials.ex;
import java.util.*;
import java.util.stream.Collectors;

public class test {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int hsum=0;
        int sum=0;
        int dsum=0;
        String result=null;
        for(int i=1; i<num; i++) {
            if(num%i==0) {
                sum+=i;
            }
        }
        int hc = sum-1;
        for(int i=1; i<sum; i++) {
            if(sum%i==0) {
            dsum+=i;}
        }
        for(int i=1; i<hc; i++) {
            if(hc%i==0) {
                hsum+=i;
            }
        }
        if(dsum==num) {
            result="친화수";
        }
        if(hsum-1==num) {
            result="혼약수"; 
            sum=hc;
        }
        else {
            result = "일반수";
        }
        System.out.println(result + " " + sum );
   }
   }

2022/02/20 13:53

Kkubuck

print('문제 1) 양의 정수 n을 입력받고 그 수가 과잉수인지 완전수인지 부족수인지 출력하시오.')
for n in [6, 20, 15]:
    x = n - sum(i for i in range(1, n) if n % i == 0)
    if x < 0:
        print(n, '은 과잉수입니다.')
    elif x > 0:
        print(n,'은 부족수입니다.')
    else:
        print(n, '은 완전수입니다.')

print('\n문제 2) 양의 정수 n을 입력받고 그 수가 과잉수인지 완전수인지 부족수인지 출력하시오.')
for n in [220, 75, 20]:
    nn = sum(i for i in range(1, n) if n % i == 0)
    if sum(i for i in range(1, nn) if nn % i == 0) == n:
        print(nn, '은 친화수입니다.')
    elif n == sum(i for i in range(1, nn-1) if (nn-1) % i == 0) -1:
        print(nn-1, '은 혼약수입니다. ')
    else:
        print(nn, '은 일반 수입니다.')

2023/09/21 20:33

insperChoi

목록으로