do while-20230531

DONGDONG_JU·2023년 5월 31일
0

자바

목록 보기
7/16

과제1

// 1부터 100까지의 합은 5050입니다. 그렇다면 1부터 몇까지의 합이 최초로 1000을 초과하는 값일까요
// 그결과를 계산하여 출력하는 코드를 작성하세요.
// for do dowhile 아무꺼나 사용하기

1.for문 써보기

for(i=1; i<=100; i++) {
			
			if(total >=1000) {
				System.out.printf("1부터 %d까지의 합이 최초로 1000을 초과하는 값 입니다.",i);
			}
		}
        

45부터 나오긴 하는데 print도 계속 반복해서 나오는 오류가 있었다.
갑자기 안나옴-나중에 고쳐야지

1-2. for문써보기 2

	for(i=0; i<=45; i++) {    //이건 그냥 조건 46번 반복임
			total += i;
		}
		System.out.printf("1부터 %d까지의 합 %d 로 최초로 1000을 초과하는 값 입니다.",i,total);
		

이건 그냥 조건 반복


2.while문 써보기

	while(total <= 1000) {
			i++;  //45에서 1000이 넘었는데 계산이끝나고 ++이 들어가서 print에서 마지막++이 된 46이 나오는거임. i++를 위에 넣어주기.
			total += i;
			
		}
		
		System.out.printf("1부터 %d까지의 합 %d 로 최초로 1000을 초과하는 값 입니다.",i,total);

처음에 i++을 total+=i 뒤에 넣었더니 계산값은 1000초과가 맞는데 46이 아니라 45가 나와야했음.

알고보니 계산을 다하고 마지막에 i++이 한번더 들어가기 때문에 46이 나왔던거라서
total += i 위로 i++ 증감식을 넣으면 고칠수 있었음.


Break

break문 써보기

	for(int i =0; i <100; i++) {
			System.out.println("i: "+i);
			
			if(i==3) {
				break;
			}
			
			for(int j =0; j < 100; j++) {
				System.out.println("\tj: "+j);
				
				if(j==2) {
					break;
				}
			}
		}

증감식만 써보기 & break 넣기

 for(;; i++) {   //증감식만 있게 만들기
		 
		 total += i;  //무한반복이라서 if조건문 넣어주기
			
			if(total >1000) {
				break;
			}
	 }
		
		
			System.out.printf("1부터 %d까지의 합은 %d 입니다",i,total);
			

잘 나온다! break 잘넣어주기!


continue

1부터 100사이의 짝수의 합을 구하는 코드를 작성하세요.
단 continue 를 사용합니다.

	int total = 0;
		for(int i=1; i<=100; i++) {
			
			if(i%2 != 0) {   //홀수면 continue 해서 밖으로
				continue;
			}
		
			total +=i;
		}
			System.out.println("total: "+total);

1.for를 while로 바꿔서 continue 쓰기

	int total = 0;
		
		int i=1;
		while(i<=100) {
			
			if(i%2 != 0) {   //홀수면 continue 해서 밖으로
				i++;         //i값 증감
				continue;    // while 에서 continue 사용할려면 미지수변경 코드를 continue 위에 넣어야함
				}
			
				total +=i;
				i++;
				
			}
		System.out.println("total: "+total);
	int total = 0,i=1; 
		
		while(total <= 1000) {
			  
			total += i;
			
			if(total > 1000) {
				continue;
			}
			i++;
		}
		
		System.out.printf("1부터 %d까지의 합 %d 로 최초로 1000을 초과하는 값 입니다.",i,total);

과제2-소수구하기

2-1
step1: 1과 자신을 제외한 20의 모든 약수를 출력하세요.

	for(int i=2; i<= 20/2; i++) {
			if(20 % i ==0) {
				System.out.print(i+ "  ");
			}
		}

2-2
step2: 2부터 20까지의 모든 수에 대하여 1과 자신을 제외한 약수를 구하여 출력하세요. 중첩for문 사용

	for(int i=2; i<=20; i++) {
			System.out.printf("%2d의 약수:",i);
			for(int j=2; j<= i/2; j++) {
				if(i % j ==0) {
					System.out.print(j+ "  ");
					
				}
			}
				System.out.println();
		}

2-3

step3: 1부터 100까지의 모든 소수를 구하여 출력하세요. 한줄로 출력 소수의 정의 1은 소수가 아님 그래서 2부터~

boolean isPrime;
		
		for(int i=2; i<=100; i++) {
			
			isPrime = true;     //각각의 i 값은 소수라고 가정!
			
			for(int j=2; j<= i/2; j++) {  //약수가 하나라도존재하면 isPrime이 false, 약수 더 찾을 필요 없으면 break;
				if(i % j ==0) {
					isPrime = false;
					break;
				}
			}
			if(isPrime) {     //위에서 false로 안바뀌고 true로 그대로 나오면 i에 출력
				System.out.print(i+"  ");
			}
				
		}

2-4
Step4: 1부터 100까지의 모든 소수를 구하여 출력하세요. 한줄에 5개씩 출력하세요.

	boolean isPrime;
			int count=0;     //count넣어서 약수면 1씩 증가시키고 5가 되면 개행되도록
		
			for(int i=2; i<=100; i++) {
			
			isPrime = true;     
			
			for(int j=2; j<= i/2; j++) {  
				if(i % j ==0) {
					isPrime = false;
					break;
				}
			}
			
			
			if(isPrime) { 
				count++;    //count넣어서 약수면 1씩 증가시키고
				System.out.printf("%3d  ",i);
				
				if(count%5==0) {  // 5가 되면 개행되도록
					System.out.println();
				}
			}
				
		}

소수 구하기 어렵다... 쉽게 쉽게 하는거 같은데 생각도 못한 방법으로 해서..
공부쫌더 해야지

참고문헌- 자바의정석 (남궁성)

profile
웹개발자로 취업하고싶어 공부중인 HDJ 입니다

0개의 댓글