Day04 이중 반복문, 공약수, 공배수, 최대 공약수, 최소 공배수

2023. 12. 13. 11:39자바 기초 및 세팅

 

TestEx01

package day04;

import java.util.Scanner;

public class TestEx1 {

	public static void main(String[] args) {
		/*
		 * Scanner를 이용하여 국어, 영어, 수학 성적을 입력받고
		 * 총점과 평균을 구하는 코드를 작성하세요.
		 * */ 
		
		Scanner Scan = new Scanner(System.in);
		System.out.print("수학 점수를 입력해주세요");
		int math = Scan.nextInt();
		System.out.print("국어 점수를 입력해주세요");
		int kor = Scan.nextInt();
		System.out.print("영어 점수를 입력해주세요");
		int eng = Scan.nextInt();
		
		System.out.println("수학, 국어, 영어의 총점은" + (math +kor +eng));
		System.out.println("수학, 국어, 영어의 평균은" + ((math +kor +eng)/3));
		
		//다른 방법
		System.out.println("성적 입력(국어, 영어, 수학 순) : ");
		int kor_ = Scan.nextInt();
		int eng_ = Scan.nextInt();
		int math_ = Scan.nextInt();
		
		// 성적의 총점과 평균을 계산
		int sum = kor_ + eng_ + math_;
		double avg = (double)sum / 3;
		//성적의 총점과 평균을 출력
		System.out.println("총점 : " + sum +"평균 : " + avg);
	}

}

 

 

Test2 공약수 구하기

package day04;

import java.util.Scanner;

public class GCDEx2 {

	public static void main(String[] args) {
		/*두 정수의 공약수를 출력하는 코드를 작성하세요/
		 * 약수 : 나누어서 떨어지는 수
		 * 공약수 : 공통으로 있는 약수
		 * 12의 약수 : 1, 2, 3, 4, 6, 12
		 * 8의 약수 : 1, 2, 4, 8
		 * 8과 12의 공약수 : 1, 2, 4
		 * */
		
		Scanner scan = new Scanner(System.in);
		System.out.print("두 정수를 입력하세요");
		int num1 = scan.nextInt();
		int num2 = scan.nextInt();
		for(int i = 1; i <= num1; i++) {
			if(num1%i==0 && num2%i==0) {
				System.out.println(i);
			}
		}
		// Scanner 사용 안하고 해보기
		int num3 = 8, num4 =12;
		for(int i = 1; i <= num3;i++) {
			if(num3%i==0 && num4%i==0) {
				System.out.println(i);
			}
		}
		//결과값 한줄로 나오게 하기
		for(int i = 1; i <= num3;i++) {
			if(num3%i==0 && num4%i==0) {
				System.out.print((i == 1) ? "" : ", " + i);
			}
		}
		
	}

}

 

 

Test3 최대공약수 구하기

package day04;

import java.util.List;
import java.util.Scanner;

public class GCDEx3 {
	public static void main(String[] args) {
		/*두 정수의 공약수를 출력하는 코드를 작성하세요/
		 * 약수 : 나누어서 떨어지는 수
		 * 공약수 : 공통으로 있는 약수
		 * 12의 약수 : 1, 2, 3, 4, 6, 12
		 * 8의 약수 : 1, 2, 4, 8
		 * 8과 12의 공약수 : 1, 2, 4
		 * 8과 12의 최대 공약수 : 4
		 * 반복 회수 : i = 1부터 num1까지 1씩 증가
		 * 규칙성 : i가 num1과 num2의 약수이면 gcd에 i를 저장
		 * */
	Scanner scan = new Scanner(System.in);
	
	System.out.print("정수 입력");
	int num1 = scan.nextInt();
	int num2 = scan.nextInt();
	int a = 0;
	for(int i = 1; i <= num1; i++) {
		if(num1%i==0 && num2%i==0) {
			a = i;
		}
	}
	System.out.println("최대 공약수는 : "+a);
	
	//다른방법
	for(int i = num1; i >= 1; i--) {
		if(num1%i==0 && num2%i==0) {
			System.out.println("최대 공약수는 : "+a);
			break;
		}
	}
	
	}
	
}

 

Test4

최소 공배수 구하기

package day04;

import java.util.Scanner;

public class LcmEx1 {

	public static void main(String[] args) {
		/*
		 * 두 정수의 최소 공배수를 구하는 코드를 작성하세요.
		 * 10의 배수 : 10, 20 ,30 ....
		 * 15의 배수 : 15, 30, 45 ....
		 * 10과 15의 공배수 : 30, 60, 90, ....
		 * 10과 15의 최소 공배수
		 * 반복회수 : i는 1부터 num1 * num2까지 1씩 증가
		 * 규칙성 : i가 num1과 num2의 공배수이면 i출력하고 반복문 종료
		 * 		=>i가 num1의 배수이고, i가 num2의 배수이면 i를 출력하고 반복문 종료
		 * 		=>i를 num1으로 나누었을 때 나머지가 0과 같고 i를 num2로 나누었을때 나머지가 0과 같다면
		 * 		i를 출력 
		 * */
		
//		Scanner scan = new Scanner(System.in);
//		System.out.print("두 정수를 입력하세요 : ");
//		int num1 = scan.nextInt();
//		int num2 = scan.nextInt();
//		int i = 0;
//		while(true) {
//			if(num1%i == 0 && num2%i == 0) {
//				System.out.println(i);
//				break;
//			}
//		}
		// 정답
		
		int num3 = 10, num4 = 15;
		for(int j = 1; j <= num3*num4; j++) {
			System.out.println(j);
			if(j%num3 == 0 && j%num4 == 0) {
				System.out.println(j);
				break;
			}
		}
		
		//i가 num1부터 num1씩 증가 => i를 num1의 배수들로만 계산함
		for(int j = num3; j <= num3*num4; j+=num3) {
			System.out.println(j);
			if(j%num4 == 0) {
				System.out.println(j);
				break;
			}
		}
	}

}

 

 

 

 

'자바 기초 및 세팅' 카테고리의 다른 글

day4 반복문, do-while  (0) 2023.12.14
day4 별찍기,  (0) 2023.12.13
day3 조건문  (0) 2023.12.13
스캐너(콘솔로 입력받기)  (0) 2023.12.11
2day 조건문  (0) 2023.12.11