JAVA
day02)제어문 관련 알고리즘
code_learner
2021. 12. 23. 00:08
1. 교환 알고리즘
//정수1입력: 10
//정수2입력: 12
//10, 11, 12
//정수1입력: 12
//정수2입력: 10
//10, 11, 12
Scanner sc = new Scanner(System.in);
System.out.println("정수입력1: ");
int num1 = sc.nextInt();
System.out.println("정수입력2: ");
int num2 = sc.nextInt();
if(num2>num1) {
//[교환]알고리즘 -> 임시저장 변수 tmp활용
int tmp=num1;
num1=num2;
num2=tmp;
}
while(num2<=num1) {//if else를 용하면 중복코드가 많아 코드 재사용성이 좋지 않기 때문에 교환알고리즘 사용
System.out.print(num2+" ");
num2++;
}
2. 최대공약수 알고리즘
/*2. 최대공약수 구하기
정수1입력: 18
정수2입력: 12
최대공약수는 6입니다.*/
Scanner sc = new Scanner( System.in);
System.out.print("정수1입력: ");
int a=sc.nextInt();
System.out.print("정수2입력: ");
int b = sc.nextInt();
int c=0;
for (int i = a; i >= 1; i--) {
//1부터 비교하여 가장 큰 값을 출력하는 것보다 뒤에서부터 비교하여 첫번째 값을 출력하는 것이 효율적
if(a%i==0&&b%i==0) {
System.out.println("최대공약수는 "+i+"입니다.");
break;
}
}
3. 1~1000까지의 완전수 구하기
Scanner sc= new Scanner(System.in);
for (int i = 1; i <= 1000; i++) {
int a=0;//i의 약수의 합
for (int j = 1; j < i; j++) {
//완전수: 본인을 제외한 약수의 합이 본인과 같으므로 j는 본인보다 작은수가 되야함
if(i%j==0) {//약수일때 더한다
a+=j;
}
}
if(a==i) {
System.out.println(i+" ");
}
}
//i i<=1000 sum j j<i i%j==0
//-----------------------------------------------
//5 T 0 1 T T
// 1 2 T F
// 3 T F
// 4 T F
// 5 F
//6 T 0 1 T T
// 1 2 T T
// 3 3 T T
// 6 4 T F
// 5 T F
// 6 F
4. 369게임
/*
6. 369 게임
1 2 짝 4 5 짝 ... 짝 짝 100
출력해주세요.
*/
for(int i=1;i<=100;i++) {
int a=i%10; // i의 일의자리
int b=i/10; // i의 십의자리
if((a%3==0&&a!=0) || (b%3==0&&b!=0)) { // a==3||a==6||a==9
System.out.print("짝! ");
}
else {
System.out.print(i+" ");
}
}