java 소수 구하기 코드

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);
 }

}


원 코드는 이렇다.

이렇고 결과는 아래의 사진과 같다

이러하다.