본문 바로가기

자바 스크립트/연습 문제

[연습 문제] 함수

- [연습 문제 46] 소스 코드

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>연습문제 - 함수</title>

    <script>
        // 함수 선언
        function add(n1, n2) {
            document.write("곱셈 결과 : " + n1 * n2, "<br>");
        }

        // 함수 호출
        add(10, 20);
    </script>
</head>

<body>
</body>

</html>

 

- [연습 문제 46] 실행 결과


- [연습 문제 47] 소스 코드

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>연습문제 - 함수</title>

    <script>
        var rightID = "manager";
        var rightPW = "1234";

        var inputID = prompt("아이디 입력");
        var inputPW = prompt("비밀번호 입력");

        login(inputID, inputPW);

        function login(id, pw) {
            if (id == rightID) {
                if (pw == rightPW) {
                    document.write("로그인 성공!", "<br>");
                }
                else {
                    document.write("로그인 실패!<br>비밀번호가 틀렸습니다.", "<br>");
                }
            }
            else {
                document.write("로그인 실패!<br>아이디가 틀렸습니다.", "<br>");
            }
        }
    </script>
</head>

<body>
</body>

</html>

 

- [연습 문제 47] 실행 결과

 

 

- [연습 문제 48] 소스 코드

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>연습문제 - 함수</title>

    <script>
        var num = prompt("숫자 입력");
        var count = prompt("제곱 횟수 입력");

        num = Number(num);
        count = Number(count);

        square(num, count);

        function square(n1, n2) {
            var result = n1;

            // n의 1승은 n이기 때문에
            // 제곱 횟수에서 1을 뺀 만큼을 반복함
            // (아래 반복문은 n의 2승부터 result에 곱해짐)
            for (var i = 0; i < n2 - 1; i++) {
                result *= n1;
            }

            document.write("결과 : " + result, "<br>");
        }
    </script>
</head>

<body>
</body>

</html>

 

- [연습 문제 48] 실행 결과

 

 

- [연습 문제 49] 소스 코드

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>연습문제 - 함수</title>

    <script>
        // 친화수 : 두 수의 쌍에 있어, 어느 한 수의 진약수를 모두 더하면 다른 수가 되는 수
        // ex) 220과 284 -> 220의 진약수를 모두 더하면 284, 284의 진약수를 모두 더하면 220
        // 따라서 220과 284는 친화수

        // 진약수 : 자기 자신을 제외한 양의 약수
        // ex) 12의 진약수는 1, 2, 3, 4, 6

        var num1 = prompt("숫자 1 입력");
        var num2 = prompt("숫자 2 입력");

        num1 = Number(num1);
        num2 = Number(num2);

        var realSum1 = getRealAliquotSum(num1); // num1의 진약수들의 합 저장
        var realSum2 = getRealAliquotSum(num2); // num2의 진약수들의 합 저장

        // n의 진약수의 합을 구하는 함수
        function getRealAliquotSum(n) {
            var sum = 0;

            // 1부터 자기 자신 전까지 반복하여
            // 약수를 모두 sum에 더함
            for (var i = 1; i < n; i++) {
                if (n % i == 0) {
                    sum += i;
                }
            }
            // n의 진약수들의 합을 반환
            return sum;
        }

        // num1의 진약수들의 합(realSum1)이 num2와 같고
        // num2의 진약수들의 합(realSum2)이 num1과 같으면
        // -> 친화수
        if (realSum1 == num2 && realSum2 == num1) {
            document.write(num1 + "과(와) " + num2 + "는(은) 친화수가 맞습니다.", "<br>");
        }
        // 친화수가 아니면
        else {
            document.write(num1 + "과(와) " + num2 + "는(은) 친화수가 아닙니다.", "<br>");
        }
    </script>
</head>

<body>
</body>

</html>

 

- [연습 문제 49] 실행 결과