1. 최대값
https://ninefloor.github.io/web-practice/work/22/ex01.html
var num=[10,20,5,8,1,2];
var max=0;
for(var i=0; i<num.length; i++){
if(max<num[i]){
max=num[i];
}
}
document.write("최대값:"+max);
2. 최소값
https://ninefloor.github.io/web-practice/work/22/ex02.html
var num=[10,20,-5,8,-1,2];
var min=0;
for(var i=0; i<num.length; i++){
if(min>num[i]){
min=num[i];
}
}
document.write("최소값:"+min);
3. 피보나치 수열
https://ninefloor.github.io/web-practice/work/22/ex03.html
var num=prompt("피보나치 수열의 길이를 입력하세요(정수)");
num=Number(num);
var fibo=[0];
for(var i=0; i<num-2; i++){
fibo[1]=1;
fibo[i+2]=fibo[i]+fibo[i+1];
}
document.write(fibo);
4. 최대공약수
https://ninefloor.github.io/web-practice/work/22/ex04.html
var num1=prompt("최대 공약수를 구할 첫 번째 정수 입력");
var num2=prompt("최대 공약수를 구할 두 번째 정수 입력");
num1=Number(num1);
num2=Number(num2);
var num1_arr=[];
var num2_arr=[];
function make_num_arr (){
for(var i=2; i<=num1; i++){
if(num1%i==0){
num1_arr.push(i);
}
}
for(var i=2; i<=num2; i++){
if(num2%i==0){
num2_arr.push(i);
}
}
}
var com_arr=[];
function make_com_arr (){
for(var j=0; j<num1_arr.length; j++){
for(var k=0; k<num2_arr.length; k++){
if(num1_arr[j]==num2_arr[k]){
com_arr.push(num1_arr[j]);
}
}
}
}
make_num_arr();
make_com_arr();
var max_com=0;
for(var i=0; i<com_arr.length; i++){
if(max_com<com_arr[i]){
max_com=com_arr[i];
}
}
document.write(num1+", "+num2+"의 최대 공약수는 "+max_com+"입니다.")
5. 최소공배수
https://ninefloor.github.io/web-practice/work/22/ex05.html
var num1=prompt("최대 공배수를 구할 첫 번째 정수 입력");
var num2=prompt("최대 공배수를 구할 두 번째 정수 입력");
num1=Number(num1);
num2=Number(num2);
var num1_arr=[];
var num2_arr=[];
function make_num_arr (){
for(var i=2; i<=num1; i++){
if(num1%i==0){
num1_arr.push(i);
}
}
for(var i=2; i<=num2; i++){
if(num2%i==0){
num2_arr.push(i);
}
}
}
var com_arr=[];
function make_com_arr (){
for(var j=0; j<num1_arr.length; j++){
for(var k=0; k<num2_arr.length; k++){
if(num1_arr[j]==num2_arr[k]){
com_arr.push(num1_arr[j]);
}
}
}
}
make_num_arr();
make_com_arr();
var max_com=0;
for(var i=0; i<com_arr.length; i++){
if(max_com<com_arr[i]){
max_com=com_arr[i];
}
}
var min_com=num1*num2/max_com
document.write(num1+", "+num2+"의 최대 공배수는 "+min_com+"입니다.")
6. 완전수
https://ninefloor.github.io/web-practice/work/22/ex06.html
var num=prompt("완전수인지 판별할 정수를 입력하세요");
var num_arr=[];
num=Number(num);
// 약수 도출하여 배열에 넣기 (본인 제외)
for(var i=1; i<num; i++){
if(num%i==0){
num_arr.push(i);
}
}
//약수 모두 더하기
var sum=0;
for(var j=0; j<num_arr.length; j++){
sum=sum+num_arr[j];
}
// 완전수 판별
if (sum==num){
document.write(num+"은 완전수가 맞습니다.")
} else {
document.write(num+"은 완전수가 아닙니다.")
}
7. 소수
https://ninefloor.github.io/web-practice/work/22/ex07.html
function prime(){
var num=prompt("소수인지 판별할 정수를 입력하세요");
num=Number(num);
if(num==2){
document.write(num+"은 소수가 맞습니다.")
return;
}
for(var i=2; i<num; i++){
if(num%i==0){
document.write(num+"은 소수가 아닙니다.")
return;
}
}
document.write(num+"은 소수가 맞습니다.")
}
prime();
8. 메르센 소수
https://ninefloor.github.io/web-practice/work/22/ex08.html
function m_prime(n){
if(n<=1){
document.write(n+"은 메르센 소수가 아닙니다.");
return;
}
// 메르센 수 판별
if((n+1) & n){
document.write(n+"은 메르센 소수가 아닙니다.");
return;
} else {
// 메르센 소수 판별
for(var i=2; i<n; i++){
if(n%i==0){
document.write(n+"은 메르센 소수가 아닙니다.");
return;
}
}
document.write(n+"은 메르센 소수가 맞습니다.");
}
}
var num=prompt("메르센 소수인지 판별할 정수를 입력하세요");
num=Number(num);
m_prime(num);
메르센 소수는 제일 구하기 어려운 문제였다. 메르센 수인지 먼저 판별하고 그 수가 소수인지 판별하는 식으로 짰는데 문제는 메르센 수인지 어떻게 판별하는가... 였고, 혼자 똥꼬쇼를 한 끝에 n이 2의 제곱수인지 확인하는 쪽으로 가닥을 잡았다. 조건문은 비트 연산을 사용하는 방식인데, 이건 2의 제곱수 판별을 하는 방법을 구글에 물어보고 얻어온 귀중한 자식이다. 원래는 n & n-1 이 조건이었으나, 메르센 소수가 2**n-1이기 때문에 -1을 지워주는 식으로 변형했음.
9. 친화수
https://ninefloor.github.io/web-practice/work/22/ex09.html
function amicable(n1,n2){
var sum1=0;
var sum2=0;
// n1, n2의 진약수 합 도출
for(var i=1; i<n1; i++){
if(n1%i==0){
sum1=sum1+i;
}
}
for(var i=1; i<n2; i++){
if(n2%i==0){
sum2=sum2+i;
}
}
// 친화수 판별
if(sum1==n2 && sum2==n1){
document.write(n1+"과"+n2+"는 친화수가 맞습니다.");
return;
} else {
document.write(n1+"과 "+n2+"는 친화수가 아닙니다.");
return;
}
}
var num1=prompt("친화수인지 판별 할 첫 번째 정수를 입력하세요");
var num2=prompt("친화수인지 판별 할 두 번째 정수를 입력하세요");
num1=Number(num1);
num2=Number(num2);
amicable(num1,num2);