// 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문 써보기
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 잘넣어주기!
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-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();
}
}
}
소수 구하기 어렵다... 쉽게 쉽게 하는거 같은데 생각도 못한 방법으로 해서..
공부쫌더 해야지
참고문헌- 자바의정석 (남궁성)