본문 바로가기

CS/알고리즘

소수 구하기

1000까지 소수를 구해보자

 

버전 1) 총 연산횟수는 78022

public class PrimeNumber1 {
    public static void main(String[] args) {

        int count=0;
        second: for(int i=2;i<=1000;i++){

            for(int j =2; j<=i-1; j++){
                count++;
                if(i%j==0){
                    continue second;
                }
            } //2for end
            System.out.println(i);
        }// 1 for end
        System.out.println("총 연산횟수는 "+count);
    }
}

버전 2) 총 연산횟수는 3774

 

소수를 배열prime에 넣어준다.

prime배열의 값으로 나누어지지 않으면 소수라고 판단하고, prime배열에 추가해준다.

홀수만 연산. 짝수는 연산에 제외 & 2로 나누는 연산은 제외.

public class PrimeNumber1 {
    public static void main(String[] args) {

    int count = 0;
    int ptr = 0;
    int[] prime = new int[500];

    prime[ptr++] = 2;
    System.out.println(2);
    prime[ptr++] = 3;
    System.out.println(3);
    for(int n = 5; n <=1000; n=n+2){
        int i;
        boolean flag = true;
        for(i=1;(prime[i]!=0)&&(prime[i]*prime[i]<=n);i++){
                count +=2;
                if(n%prime[i]==0){
                    flag= false;
                    break;
                }
        }
        if(flag){
            prime[ptr++] = n;
            count++;
            System.out.println(n);
        }
    }
        System.out.println("총 연산횟수는"+count);

    }
}

'CS > 알고리즘' 카테고리의 다른 글

하노이의 탑  (0) 2023.10.27
시간 계산하기(손코딩)  (0) 2023.10.20
재귀함수와 반복문의 차이점  (0) 2023.10.19
중앙값 구하기  (0) 2023.09.20
알고리즘 스터디 문제 1,2(기수변환)  (0) 2023.09.15