백준 문제풀기/JAVA

[백준 4134 JAVA 자바] 다음 소수

냉동피자 2023. 8. 9. 00:25

정수가 주어졌을때

그 수 보다 크거나 같은 소수중

가장 작은 소수를 찾는 문제입니다

 

이 문제의 함정은

정수 n이

0<= n <=4*10^9인점 입니다

 

정수는 int지 하고 그냥 썼다가는

 

저랑 같은 길을 걷게됩니다

 

코드입니다

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());

		long[] arr = new long[n];

		for(int i=0;i<n;i++) {
			long t = Long.parseLong(br.readLine());
			while (true) {
				if (isprime(t)==1) {
					arr[i]=t;
					break;
				}
				t++;
			}
		}
		
		for(int i=0;i<n;i++) {
			System.out.println(arr[i]);
		}
	}  

	static int isprime(long m) {
		if (m==0 || m==1) 
		{
			return 0;
		}
		for (int i=2;i<=(int)(Math.sqrt(m));i++) {
			if (m%i==0) {
				return 0;
			}
		}
		return 1;
	}
}

0<= n <=4*10^9 니깐

int 가 아닌

long을 이용해야합니다