본문 바로가기

자바 스크립트/기타

[자바 스크립트] 등차수열, 등비수열, 피보나치 수열, 세균 수 구하기 (배열에 저장)

- [등차수열, 등비수열] 소스 코드

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

<head>
    <meta charset="UTF-8">
    <title>예제</title>

    <script>
        // ********** 등차수열 **********
        // a + (n - 1) * d;
        // a : 첫항, 초항
        // n : 수열의 개수
        // d : 공차

        // ex)
        // a = 5, n = 8번째, d = 3(차이 값)
        // 5 8 11 14 17 20 23 26 29 32 ...

        // 위 수열을 a + (n - 1) * d 공식에 대입해보기
        // 5 + 7 * 3 = 26
        // -> 5에다가 차이값 3을 7번 한 만큼 더하면 8번째 수가 나옴

        var arr = new Array();

        var a = prompt("공차수열 첫 항 입력");
        a = Number(a);

        var n = prompt("공차수열 항의 개수 입력");
        n = Number(n);

        var d = prompt("공차수열 공차 입력");
        d = Number(d);

        for (var i = 1; i <= n; i++) {
            arr.push((a + (i - 1) * d));
        }

        document.write("공차수열 : ");
        for (var i = 0; i < n; i++) {
            document.write(arr[i] + " ");
        }
        document.write("<br>");



        // ********** 등비수열 **********
        // 4 12 36 108 324 972 ...
        // 첫항 4
        // 항의 개수 10
        // 등비 3
        // 등비만큼 곱해지는 수열

        var arr = new Array();

        var a = prompt("공비수열 첫 항 입력");
        a = Number(a);

        var n = prompt("공비수열 항의 개수 입력");
        n = Number(n);

        var r = prompt("공비수열 공비 입력");
        r = Number(r);

        for (var i = 1; i <= n; i++) {
            // 처음 반복 시에는 r값이 1이 되어야 하기 때문에
            // 곱해줄 값을 직접 만듦

            // i가 1일 때 j < i 조건이 false가 되므로
            // 반복을 실행하지 않고 multi 값이 1로 바로 넘어감
            // i가 2일 때 r 값이 넘어감
            // i가 3일 때 r * 2 값이 넘어감
            // ...
            // i가 n일 때 r * n 값이 넘어감
            var multi = 1;
            for (var j = 1; j < i; j++) {
                multi = multi * r;
            }

            arr.push(a * multi);
        }

        document.write("공비수열 : ");
        for (var i = 0; i < n; i++) {
            document.write(arr[i] + " ");
        }
        document.write("<br>");
    </script>
</head>

<body>
</body>

</html>

 

- [등차수열, 등비수열] 실행 결과

 

- [피보나치 수열] 소스 코드

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

<head>
    <meta charset="UTF-8">
    <title>예제</title>

    <script>
        // ********** 피보나치 수열 **********
        // 1 1 2 3 5 8 13 21 34 55 89 144 ...
        // 한 항의 값이 그 항의 전과 전전값을 더한 값이 되는 수열

        var len = prompt("피보나치 수열 길이 입력");
        len = Number(len);

        var arr = new Array();
        arr.push(0);
        arr.push(1);

        // i는 2부터 시작해야 함 (전과 전전 요소를 가져와야 하기 때문에)
        for (var i = 2; i <= len - 1; i++) {
            arr.push(arr[i - 1] + arr[i - 2]);
        }

        for (var i = 0; i < len; i++) {
            document.write(arr[i] + " ");
        }
        document.write("<br>");
    </script>
</head>

<body>
</body>

</html>

 

- [피보나치 수열] 실행 결과

 

- [세균 수 구하기] 소스 코드

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

<head>
    <meta charset="UTF-8">
    <title>예제</title>

    <script>
        // ********** 세균 수 **********

        // 초기 세균 수
        var amount = prompt("세균 수 입력");
        amount = Number(amount);

        // 시간
        var time = prompt("시간 입력");
        time = Number(time);

        // 세균 수 저장
        var amountArr = new Array();

        for (var i = 1; i <= time; i++) {
            amount *= 2;
            amountArr.push(amount);
        }

        // 세균 수 찍기
        for (var i = 0; i < amountArr.length; i++) {
            document.write((i + 1) + "시간 뒤 세균 수 : " + amountArr[i], "<br>");
        }
    </script>
</head>

<body>
</body>

</html>

 

- [세균 수 구하기] 실행 결과