근접한 정수 구하기
<입력>
N (0이면 종료)
<출력>
1) 1부터 k까지의 합 중 입력값 N에 가장 근접하는 k 출력
2) k! 가 N에 가장 근접하는 k 출력
3) 이 N에 가장 근접하는 값 m과 k 출력
<코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import java.util.Scanner; public class CloseIntegerMain { public static void main(String[] args) { CloseIntegerMain integer = new CloseIntegerMain(); integer.doit(); } void doit() { Scanner scan = new Scanner(System.in); Process process = null; while(true) { process = new Process(); process.input(scan); if (process.N == 0 ) break; process.square(); process.print(process.sigma(), process.factorial()); } } } class Process { int N = 0; int sum = 0; int mul = 1; int m = 0, k = 0, square = 1; /** 입력 */ void input(Scanner scan) { System.out.print("값을 넣으세요 : "); N = scan.nextInt(); } /** 시그마 */ int sigma() { int i = 1; for(i = 1; sum + i < N; i++) { sum += i; } return --i; } /** 팩토리얼 */ int factorial() { int i = 1; for (i = 1; mul * i < N; i++) { mul *= i; } return --i; } /** 제곱 */ void square() { double tmp; int j = 1; for (int i = 2; i * i < N; i++) { tmp = 1; for (j = 1; tmp * i < N; j++) { tmp *= i; } if (tmp > square) { m = i; k = --j; square = (int)tmp; } } } /** 출력 */ void print(int sigma, int factorial) { System.out.printf("Sigma_%-5d\t=%4d\n", sigma, sum); System.out.printf("%d!\t\t=%4d\n", factorial, mul); System.out.printf("%d**%d\t\t=%4d\n", m, k, square); } } | cs |
<실행결과>
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] Math.abs() 함수 (0) | 2018.09.19 |
---|---|
[Java] 묵시적. 명시적 형 변환 (0) | 2018.09.18 |
[수치계산] 학생 점수 프로그램 (0) | 2018.09.13 |
[수치계산] 음료 주문 프로그램 (0) | 2018.09.13 |
[Java] 소수의 개수 구하기 (2) | 2018.09.13 |