JAVA

※ 사용자로부터 원하는 단(구구단)을 입력받아 이에 해당하는 구구단을 출력하는 프로그램을 구현한다. 단, 1단 ~ 9단 사이의 수를 입력받은 상황이 아니라면 프로그램을 종료해 버릴 수 있도록 처리한다.

 실행 예)
 원하는 단(구구단) 입력 : 7
 7 * 1 = 7
 7 * 2 = 14
 7 * 3 = 21
    :
 7 * 9 = 63
 계속하려면 아무 키나 누르세요...
 원하는 단(구구단) 입력 :11
 1부터 9까지의 정수만 입력 가능합니다.
 계속하려면 아무 키나 누르세요...


import java.util.Scanner;

public class Test053
{
	public static void main(String[] args)
	{
		// Scanner 인스턴스 생성	
		Scanner sc = new Scanner(System.in);
		
		// 주요 변수 선언
		int n;			// 단을 입력받을 정수 변수
		int i=1;		// 반복문을 수행하기 위한 변수
		
		// 연산 및 처리
		System.out.print("원하는 단(구구단) 입력 : ");
		n = sc.nextInt();
		
		// 결과 출력
		// 1~9사이가 아닌 값을 입력 받을시 예외처리
		if(( !((n<9)&&(n>1)) ))
		{	
			System.out.println("1부터 9까지의 정수만 입력 가능합니다.");
			return;
		}
		
		while(i<=9)
		{
			System.out.println(n + " * " + i + " = " + (n*i) );
			i++;
		}

	}
}

 

실행 결과

// 실행 결과
/*
원하는 단(구구단) 입력 : 5
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
계속하려면 아무 키나 누르십시오 . . .

원하는 단(구구단) 입력 : 0
1부터 9까지의 정수만 입력 가능합니다.
계속하려면 아무 키나 누르십시오 . . .
*/

Test052 반복문 while문(10)

2020. 9. 3. 03:50

※ 사용자로부터 임의의 정수를 입력받아 1부터 입력받은 그 수 까지의  전체 합과, 짝수의 합과, 홀수의 합을 각각 결과값으로 출력하는 프로그램을 구현한다.

 실행 예)
 임의의 정수 입력 : 270
 1 ~ 270 까지 정수의 합 : xxxx
 1 ~ 270 까지 짝수의 합 : xxxx
 1 ~ 270 까지 홀수의 합 : xxxx



import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class Test052
{
	public static void main(String[] args) throws IOException
	{
		// BufferedReader 인스턴스 생성
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// 주요 변수 선언
		int n;						// 입력받을 정수를 담을 변수
		int i=1;					// 반복문을 수행할 반복 변수
		int sum, evenSum, oddSum;	// 정수, 짝수, 홀수의 합을 담을 변수
		sum=evenSum=oddSum=0;		// 을 0으로 초기화
		
		// 연산 및 처리
		System.out.print("임의의 정수 입력 : ");
		n = Integer.parseInt(br.readLine());

		while(i<=n)
		{
			oddSum += i++;
			evenSum += i++;
		}
		sum = oddSum + evenSum;

		// 결과 출력
		System.out.println("1 ~ " + n + " 까지 정수의 합 : " + sum);
		System.out.println("1 ~ " + n + " 까지 짝수의 합 : " + evenSum);
		System.out.println("1 ~ " + n + " 까지 홀수의 합 : " + oddSum);
	}

}

 

실행 결과

// 실행 결과
/*
임의의 정수 입력 : 10
1 ~ 10 까지 정수의 합 : 55
1 ~ 10 까지 짝수의 합 : 30
1 ~ 10 까지 홀수의 합 : 25
계속하려면 아무 키나 누르십시오 . . .

임의의 정수 입력 : 14
1 ~ 14 까지 정수의 합 : 105
1 ~ 14 까지 짝수의 합 : 56
1 ~ 14 까지 홀수의 합 : 49
계속하려면 아무 키나 누르십시오 . . .
*/

Test051 반복문 while문(9)

2020. 9. 3. 03:49

※ 사용자로부터 임의의 두 정수를 입력받아 작은 수 부터 큰 수 까지의 합을 구하여 결과를 출력하는 프로그램을 구현한다.

 실행 예)
 첫 번째 정수 입력 : 10
 두 번째 정수 입력 : 20
 >> 10 ~ 20 까지의 합 : xxxx
 계속하려면 아무 키나 누르세요...

 실행 예)
 첫 번째 정수 입력 : 10
 두 번째 정수 입력 : 2
 >> 2 ~ 10 까지의 합 : 54
 계속하려면 아무 키나 누르세요...




import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test051
{
	public static void main(String[] args) throws IOException
	{		
		// 주요 변수 선언

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n;				//-- 루프 변수로 활용할 변수
		int su1, su2;		//-- 첫 번째, 두 번째 입력하는 정수를 담아낼 변수
		int result = 0;		//-- 누적합을 담아낼 변수

		
		// 연산 및 처리
		System.out.print("첫 번째 정수 입력 : ");
		su1 = Integer.parseInt(br.readLine());
		System.out.print("두 번째 정수 입력 : ");
		su2 = Integer.parseInt(br.readLine());

		// 입력받은 두 수의 크기 비교 및 자리 바꿈
		// 즉, su1 이 su2 보다 큰 경우 두 수의 자리를 바꿀 수 있도록 처리
		if(su1 > su2)
		{
			// 자리 바꿈
			su1 = su1 ^ su2;
			su2 = su2 ^ su1;
			su1 = su1 ^ su2;
		}

		// 반복 연산 수행
		// 반복 연산을 수행하기 전에
		// 작은 수를 따로 저장하여 루프 변수로 활용한다.
		// (이유는... 결과를 출력해 주는 과정에서 작은 수(su1)가 필요한데...
		// 직접 이 수를 증가시켜 나갈 경우... 최종 결과 출력이 불가능하기 때문에...)
		n = su1;

		while(su1 <= su2)	// 3	6
		{
			result+=su1;	//0+3+4+5+6
			su1++;
		}
		

		// 결과 출력

		System.out.println(">> " + n + " ~ " + su2 + "까지의 합 : " + result);




	}
}
// 실행 결과
/*
첫 번째 정수 입력 : 10
두 번째 정수 입력 : 2
>> 2 ~ 10까지의 합 : 54
계속하려면 아무 키나 누르십시오 . . .
*/

수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 이는 고대 그리스 수학자 에라토스테네스가 발견하였다.

 

 

  1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다.
  2. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색)
  3. 자기 자신을 제외한 2의 배수를 모두 지운다.
  4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색)
  5. 자기 자신을 제외한 3의 배수를 모두 지운다.
  6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색)
  7. 자기 자신을 제외한 5의 배수를 모두 지운다.
  8. 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. (노란색)
  9. 자기 자신을 제외한 7의 배수를 모두 지운다.
  10. 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다.

※ 이를 이용하여 1부터 100사이의 소수를 구하여라


//1~100사이의 소수 구하기

public class Practice1
{
	public static void main(String[] args)
	{
		int n=100;
		boolean[] chae = new boolean[n+1];
		int cnt=0;
		
		// 모든 수를 초기화
		for(int i=2; i<=100; i++)
		{
			chae[i]=true;
		}
		chae[1] = false;
		
		//
		for(int i = 2; i * i <= n ; i++)
		{
			if(chae[i] == false)
				continue;

			for(int j = i * i; j <= n; j+=i)
			{
				chae[j] = false;
			}
		}

		//chae[1] = false;

		for(int i = 2; i < n; i++)
		{
			if (chae[i] == true)
			{
				System.out.printf("%4d ", i);
				cnt++;
				
				if(cnt%5==0)
				{
					System.out.println();
				}
			}

		}
		
	}
}

 

실행 결과

// 실행 결과
/*
   2    3    5    7   11
  13   17   19   23   29
  31   37   41   43   47
  53   59   61   67   71
  73   79   83   89   97
계속하려면 아무 키나 누르십시오 . . .
*/

※ 사용자로부터 임의의 정수를 입력받아 입력받은 정수가 소수인지 아닌지를 판별하여 결과를 출력하는 프로그램을 구현한다.

 실행 예)
 임의의 정수 입력 : 100
 100 → 소수 아님
 계속하려면 아무 키나 누르세요...

 임의의 정수 입력 : 11
 100 → 소수
 계속하려면 아무 키나 누르세요...

 ※ 소수 : 1 또는 자기 자신의 값 이외의 어떤 수로도 나누어 떨어지지 않는 수. 단, 1은 소수 아님.


방법 ① 


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test050
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int i = 2;
		int input;

		System.out.print("임의의 정수 입력 : ");
		input = Integer.parseInt(br.readLine());
		
		if(input == 1)
		{
			System.out.println(input + " → 소수 아님");
			return;			
		}

		while(i<input)
		{
			if (input % i == 0)
			{
				System.out.println(input + " → 소수 아님");
				return;
			}
			i++;
		}
		System.out.println(input + " → 소수");
	}
}

 

방법 ② 

 

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int i = 1;
		int input;
		int cnt = 0;

		System.out.print("임의의 정수 입력 : ");
		input = Integer.parseInt(br.readLine());

		while(i<=input)
		{
			if (input % i == 0)
			{
				cnt++;
			}
			i++;
		}
		if(cnt==2)
			System.out.println(input + " → 소수");
		else
			System.out.println(input + " → 소수 아님");

 

방법 ③

 

		// 주요 변수 선언
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int num;		//-- 사용자 입력값을 담아둘 변수

		//연산 및 처리
		System.out.print("임의의 정수 입력 : ");
		num = Integer.parseInt(br.readLine());

		int n=2;		//-- 입력값을 대상으로 나눗셈 연산을 수행할 변수
					//   (1씩 증가)   27 → 2 3 4 5 6 ... 26

		//String flag = "소수다";
		boolean flag = true;

		while(n < num)	// num=7 → n=2~6 / num=50 →n=2~49
		{
			if(num % n == 0)
			{
				//flag = "소수가아니다";
				flag = false;
				break;
			}

			n++;
		}

		// 결과 출력
		//System.out.println(num + " → " + flag);
		//-- 출력 전에 수행해야 할 추가 확인
		//   → 입력값이 1인지 아닌지에 대한 추가 검토
		if(flag && num != 1)
		{
			System.out.printf("%d → 소수\n", num);
		}
		else
		{
			System.out.printf("%d → 소수 아님\n", num);
		}

 

Test049 반복문 while문(7)

2020. 9. 3. 03:35

※ 1 * 2 * 3 * 4 * ... * 9 * 10 의 연산 결과를 출력하는 프로그램을 구현한다.



public class Test049
{
	public static void main(String[] args)
	{
		// 주요 변수 선언 및 초기화
		int n = 0, result = 1; //-- 누적곱을 담을 변수 (→ 1로 초기화 check~!!!)

		// 연산 및 처리
		while (n<10)
		{
			n++;
			result*=n;
		}
        
        	// 결과 출력
		System.out.println("연산 결과 : " + result);
	}
}

// 실행 결과
/*
연산 결과 : 3628800
계속하려면 아무 키나 누르십시오 . . .
*/

+ Recent posts