2016. 8. 27. 07:52ㆍ공부/JAVA
나는 수포자였다. 그렇기 때문에 수학을 눈 밖에 둔지 10년은 된거 같다. 하지만 그래선 안된다.
논리적인 사고를 하기에는 수학만큼 좋은 게 없기때문이다.
소수를 구하라는 문제가 주어졌을때 수학적인 지식이 없으면 소수를 어떻게 찾아야 할지 고민을 계속한다.
소수는 1과 자신으로만 나눠지는 수를 소수라고 한다. 즉 나눠서 나머지가 0이 떨어지는 경우는 2가지 경우밖에 없다는 말이다.
public class DoubleForProb1 {
public static void main(String[] args) {
int number=0;
System.out.println("소수구하기");
for(int a=1; a<=100; a++){
int count=0; /*카운트는 가장 바깥의 for문에 변수선언과 초기화를 해준다. 그 이유는 밑에 if문을 돌고 나와서도 초기화값인0이 안돼고 돈다면 if(count==2)를 만족하는 값은 한번 밖에 나오지 않기 때문에 이프문 안의 연산이 이뤄지지 않는다.
for(int i=1; i<=a; i++){
if(a%i==0){
/* a를 i로 나누었을때 나머지가 0인 경우는 count의 값을 1더해준다. count값이 2가 아닌이상 밑에 if문은 생략하고 지나치게 된다. 그러다가 2가 되었을때 소수라고 출력을 해준다. */
count+=1;
}
}
if(count==2){
//count를 2에 맞추는 이유는 소수의 특성이 1과 자신의 값으로만 나눠지는 값이기 때문이다.
System.out.println(a+"는(은) 소수입니다.");
number+=1; //number에 if문이 실행 될때마다 1씩 숫자가 쌓인다.
}
}
System.out.println("소수의 개수는 "+number);
}
}
이렇고 결과는 아래의 사진과 같다
이러하다.
'공부 > JAVA' 카테고리의 다른 글
java예외 처리와 equals 재정의 (0) | 2016.09.13 |
---|---|
JAVA 지정한 char배열 문자열만 거꾸로 출력하기 (0) | 2016.09.11 |
JAVA 조건문 (분기) (1) | 2015.11.26 |
JAVA 공부 Boolean 과 비교 연산자 (1) | 2015.11.25 |