알고리즘 기초1 Java

수학1_1978 번 : 소수찾기 JAVA

람대리 2024. 3. 20. 15:19
728x90

방법1 : 기본 판별법

 

boolean isPrime(int num){
	if(num==1)
    	return false;
    
    for(int i=2;i<num;i++){
    	if(num%i==0){
        	return false;
        }
    }
    return true;
}

 

방법2 : 제곱근을 이용한 기본 판별법

 

boolean isPrime(int num){

    if(num==1){
		return false;
    }
    for(int i=2;i<=Math.sqrt(num);i++){
    	if(num%i==0)
        	return false;
    }
    return true;
}

 

방법3 : 에라토스테스이 체

boolean[] makePrime(int num){
	boolean[] prime = new boolean[num+1];
    prime[0] = true;
    prime[1] = true;
    prime[2] = false;
    for(int i=2;i<=Math.sqrt(num);i++){
    	
        int j = 1;
        while(i*j<=num){
        	if(prime[i*j]==false){
            	j++;
                continue;
            }
            prime[i*j] = true;
            j++;
        }
        return prime;
    }
}

 

문제 풀이는 제곱근을 이용하여 풀었다.

 

import java.io.*;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        br.readLine();
        int count = 0;
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        
        while(st.hasMoreTokens()){
            boolean isPrime = true;
            
            int num = Integer.parseInt(st.nextToken());
            
            if(num==1)
                continue;
            for(int i=2;i<=Math.sqrt(num);i++){
                if(num%i==0){
                    isPrime = false;
                    break;
                }
            }
            if(isPrime)
                count++;
        }
        System.out.print(count);
    }
}