Bibi's DevLog ๐ค๐
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ์ฐ์ต๋ฌธ์ 3 ์ ๋ฆฌ์ ํผ๋๋ฐฑ ๋ณธ๋ฌธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ์ฐ์ต๋ฌธ์ 3 ์ ๋ฆฌ์ ํผ๋๋ฐฑ
๋น๋น bibi 2020. 10. 17. 23:51* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
์ ๋ต ์ฝ๋ ๋ณธ๋ฌธ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>์์ ์ฐพ๊ธฐ</title>
</head>
<body>
<h1>์์ ๋ชฉ๋ก๋ค</h1>
<div id = "result"></div>
<script>
var numbers = {};
numbers.all = [];
numbers.prime = [];
numbers.isPrime = function(number) {
for (var i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
};
numbers.addAllNumber = function(max_num) {
for (var i = 2; i <= max_num; i++) {
this.all.push(i);
}
};
numbers.calcPrimes = function() {
for (var i = 0; i < this.all.length; i++) {
var n = this.all[i];
if (this.isPrime(n)) {
this.prime.push(n);
}
}
};
numbers.getAllPrimeNumbers = function() {
var ret = "";
ret += "<h2>์ ์ฒด ์์์ ๊ฐฏ์:" + this.prime.length + "</h2>\n";
for (var i = 0; i < this.prime.length; i++) {
ret += (i+1) + "๋ฒ์งธ ์์: " + this.prime[i] + "<br>\n";
}
return ret;
};
numbers.addAllNumber(10000);
numbers.calcPrimes();
document.getElementById('result').innerHTML = numbers.getAllPrimeNumbers();
</script>
</body>
</html>
var numbers = {};
numbers.all = [];
numbers.prime = [];
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
numbers = {}; // ๊ฐ์ฒด
numbers.all = []; //์์ฑ)์ซ์ ๋ฐฐ์ด
numbers.prime = []; //์์ฑ)์์ ๋ฐฐ์ด
- ๊ฐ์ฒด ์ ์ธํ ๋ var ๋ฅผ ๋ถ์ด์.
numbers.isPrime = function(number) {
for (var i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
};
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
numbers.isPrime = function (number) {
for (var i = 1; i < number; i++) {
if (number % i === 0) {
}
}
};
numbers.isPrime ์ ์ด๋ค ์ซ์๊ฐ ์์์ธ์ง ์๋์ง๋ฅผ ํ๋จํ๋ ๋ฉ์๋.
( โ 1์ ์์๊ฐ ์๋๋ค. ๋ฐ๋ผ์ 2๋ถํฐ ์์ํ
์คํธ๋ฅผ ํ๊ณ , ์ธ์๋ 2๋ถํฐ ์์ํจ.)
(var i = 2;)
for - i๋ number๋ฏธ๋ง, 2 ์ด์์ 1์ฉ ์ฆ๊ฐํ๋ ์.(2,3,4,5..)
if - (number๋ฅผ i๋ก ๋๋ ๋๋จธ์ง๊ฐ 0์ด๋ฉด) ์์๊ฐ ์๋๋ค.
์ฆ 1๊ณผ ์๊ธฐ ์์ ์ธ์ ๋๋์ด๋จ์ด์ง๋ ์ธ์๊ฐ ์๋ค = ์์๊ฐ ์๋๋ค.
๋ฐ๋ผ์ false๋ฅผ ๋ฐํ return false;
i๋ number๋ฏธ๋ง, 2 ์ด์์ 1์ฉ ์ฆ๊ฐํ๋ ์ (2,3,4,5..) ๋ชจ๋์ ๋ํด
i๋ก ๋๋ ๋๋จธ์ง๊ฐ 0์ด ์๋๋ฉด
์ฆ ์์ ๋ฐ๋ณต๋ฌธ&์กฐ๊ฑด๋ฌธ ๋ชจ๋์ ๋ถํฉํ์ง ์์ false๊ฐ ๋ฐํ๋์ง ์์ผ๋ฉด
๋ฆฌํด๊ฐ์ผ๋ก true๋ฅผ ๋ฐํํจ. return true;
( โ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ return true;๋ for๋ฌธ, if๋ฌธ ๋ฐ๊นฅ์ ์์!! for๋ฌธ์๋ if๋ฌธ์๋ ํด๋น๋์ง ์์์ผ๋ง ์์์ด๋ฏ๋ก)
numbers.addAllNumber = function(max_num) {
for (var i = 2; i <= max_num; i++) {
this.all.push(i);
}
};
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
numbers.addAll = function (max_num) {
for (var i = 1; i < max_num; i++) {
this.all[i] = i;
}
};
numbers.addAllNumber ์ number.all์ด๋ผ๋ ํ๋กํผํฐ (๋ฐฐ์ด)์ 1๋ถํฐ 10000์ฌ์ด์ ๋ชจ๋ ์ซ์๋ฅผ ์ง์ด๋ฃ๋ ๋ฉ์๋.
( โ 1์ ์์๊ฐ ์๋๋ค. ๋ฐ๋ผ์ 1์ด ์๋ 2 ์ด์์ ์ซ์์ ๋ํด ์์ํ
์คํธ๋ฅผ ํจ.)
(var i = 2;)
- 10000(max_num)์ ๋ํด์๋ ์์ํ ์คํธ๋ฅผ ํด์ผ ํ๋ฏ๋ก i <= max_num; ์ด๋ค.
- 2๋ถํฐ 10000๊น์ง ๋ชจ๋ ์์ฐ์๋ฅผ numbers.all์ด๋ผ๋ ๋ฐฐ์ด์ ๋ฃ๋๋ค. this.all.push(i)
โป this.all[i] = i; ๋ก๋ ๊ฐ์ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๊ธด ํ๋ค!
numbers.calcPrimes = function() {
for (var i = 0; i < this.all.length; i++) {
var n = this.all[i];
if (this.isPrime(n)) {
this.prime.push(n);
}
}
};
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
numbers.addPrime = function () {
};// ๋ฉ์๋)์์๋ผ๋ฉด ์์ ๋ฐฐ์ด์ ์ถ๊ฐ
numbers.calcPrimes์
numbers.isPrime(number)์์ ์์๋ก ํ๋จ๋ ์ซ์๋ค์
numbers.prime์ด๋ผ๋ ํ๋กํผํฐ (์์ ๋ฐฐ์ด) ์ ๋ฃ๋ ๋ฉ์๋์ด๋ค.
๊ฐ์ฅ ์ด๋ ค์ธ ์ค ์์๋๋ฐ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ค.
numbers.isPrime์์ ๋ฆฌํด๊ฐ์ด true์ธ ์ซ์๋ค๋ง numbers.prime์ ๋ฃ์ผ๋ฉด ๋๋ค.
๊ทผ๋ฐ ๋ฆฌํด๊ฐ์ด true์ธ๊ฑธ ์ด๋ป๊ฒ ํ๋ณํด์ ๋ฃ๋?.. ํ๊ณ ํ์ฐธ ๊ณ ๋ฏผํ๋๋ฐ
this.isPrime(n)์ ๋ฆฌํด๊ฐ ์์ฒด๊ฐ true์ด๋ฉด ์ด ์์ฒด๊ฐ if๋ฌธ์ ์กฐ๊ฑด์์ด ๋๋ ๊ฑฐ์๋ค. '0'...!!
-for
i๋ 0๋ถํฐ this.all.length(numbers.all์ด๋ผ๋ ์ซ์ ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ = ๋ฐฐ์ด ์ฒ์๋ถํฐ ๋๊น์ง!) ๊น์ง 1์ฉ ์ฆ๊ฐํ๋ฉฐ ๋ฐ๋ณต.
n์ด๋ผ๋ ๋ณ์๋ฅผ this.all์ [i]๋ฒ์งธ ๊ฐ์ผ๋ก ํ๋ค.
-if
๋ง์ฝ n์ ์์ ํ๋ณ ๊ฒฐ๊ณผ(numbers.isPrime์ ๋ฆฌํด๊ฐ)๊ฐ true์ด๋ฉด -> (this.isPrime(n))
numbers.prime์ด๋ผ๋ ๋ฐฐ์ด์ ๋งจ ๋์ n์ ๋ฃ๋๋ค.
(๋ฐ๋๋ก this.isPrime(n)์ ๊ฒฐ๊ณผ๊ฐ false์ด๋ฉด, ์กฐ๊ฑด๋ฌธ์ด false์ด๋ฏ๋ก ๊ณง๋ฐ๋ก ์กฐ๊ฑด๋ฌธ์ ๋น ์ ธ๋๊ฐ๋ค.)
โ ์ด๋ฐ ์ฝ๋ฉ์ numbers.isPrime()์ ๋ฆฌํด๊ฐ์ true/fasle๋ก ์ ํด ๋์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒ!
numbers.getAllPrimeNumbers = function() {
var ret = "";
ret += "<h2>์ ์ฒด ์์์ ๊ฐฏ์:" + this.prime.length + "</h2>\n";
for (var i = 0; i < this.prime.length; i++) {
ret += (i+1) + "๋ฒ์งธ ์์: " + this.prime[i] + "<br>\n";
}
return ret;
};
//////////////↑์ ๋ต ์ฝ๋///↓๋ด๊ฐ ์ด ์ฝ๋////////////
numbers.getAllPrimes = function () {
};// ๋ฉ์๋) ์์ ์ ์ฒด ๊ฐ์ ธ์ค๊ธฐ
numbers.getAllPrimeNumbers๋ ๊ณ์ฐ๋ ์ ์ฒด ์์์ ๊ฐฏ์์ n๋ฒ์งธ ์์ ์ ๋ณด๋ค์ ์ถ๋ ฅํด ์ฃผ๋ ๋ฉ์๋์ด๋ค.
ret ์ด๋ผ๋ ๋น์ด ์๋ ๊ฐ์ ๋ง๋ ๋ค. var ret = "";
ret ์ "<h2>์ ์ฒด ์์์ ๊ฐฏ์:"+this.prime.length+"</h2>\n";์ ๋ํ ๊ฒ์ ret์ผ๋ก ํ๋ค.
(์ ์ฒด ์์์ ๊ฐฏ์ = numbers.prime ๋ฐฐ์ด์ ๊ธธ์ด ์ด๋ฏ๋ก)
numbers.prime ์ ์ ์ฒด ์์๋ฅผ ๋ชจ๋ ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ค.
-for
0๋ฒ์งธ๋ถํฐ ์ธ์ผ ํ๋ฏ๋ก 0์ผ๋ก ์์. var i = 0;
๋ฐ๋ณต์ด ๋๋๋ ๊ฑด numbers.prime์ ๊ธธ์ด-1๊น์ง์ด๋ฏ๋ก i<this.prime.length;
( โ ์์ ๋ฐฐ์ด์ 1๋ฒ์งธ๋ถํฐ ๋๊น์ง === 0 ๋ฒ์งธ์์ ๋-1๊น์ง.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ i<=this.prime.length;๊ฐ ์๋ i<this.prime.length;์ด๋ค.
<= ๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง, ์ ํํ ์ฝ๋๊ฐ ์๋๋ฏ๋ก ์ง์ํ์.)
ret ์ (i+1) + "๋ฒ์งธ ์์: " + this.prime[i] + "<br>\n"; ๋ฅผ ๋ํ ๊ฒ์ ret์ผ๋ก ํ๋ค.
๋ฐ๋ณต๋ฌธ์ด ๋๋๋ฉด ret๋ฅผ ์ถ๋ ฅํ๋ค.
โ \n (์ญ์ฌ๋์ n)์ด๋?
์ค๋ฐ๊ฟ์ ๊ธฐ๋ฅ์ ํ๋ค.
numbers.addAllNumber(10000);
numbers.calcPrimes();
document.getElementById('result').innerHTML = numbers.getAllPrimeNumbers();
/// ๋ด๊ฐ ์ง ์ฝ๋ - ์์
๋ง๋ฌด๋ฆฌ ์ฝ๋.
๋ง๋ ๋ฉ์๋๋ค์ ์คํํด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
numbers.addAllNumber(number)์ 10000์ ์
๋ ฅํด ์คํํ๋ค.
numbers.calcPrimes()์ ์คํํ๋ค.
์น ๋ฌธ์์ 'result'๋์ numbers.getAllPrimeNumbers()์ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ๋ค.
โ .innerHTML์ด๋ ?
์ ํํ ์์ญ ๋ด์์ html ์ฝ๋๋ฅผ ์ฝ์ ํ๋ค๋ ์๋ฏธ์ด๋ค.
๋ณดํต document.getElementById("~").innerHTML = ์คํํ html์ฝ๋; ํํ๋ก ๋ง์ด ์ฐ์ธ๋ค.
id๊ฐ์ด "~"์ธ ์์ญ์ ์ฐํญ์ html์ฝ๋๋ฅผ ์คํํ๋ผ๋ ์๋ฏธ.
๐พํ ์ค์ฉ ๋ฐ๋ผ ์น ์์ฑ ์ฝ๋๊ฐ ๋์ํ์ง ์์์ ๋๋ฒ๊น .
- numbers.addAllNumber ์ฝ๋ ์ค
this.all.push(i);๋ฅผ
this.all.push = i ์ด๋ ๊ฒ ์จ ๋์๋ค. ใ
ใ
ใ
ใ
..
์์ผ๋ก ์์ ๊ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ ์ต์ํด์ ธ์ผ๊ฒ ๋ค!!