package function;
import java.util.Arrays;
public class Ex03 {
public static void main(String[] args) {
// 1) 전달받은 정수가 primeNumber인지 아닌지 판별하는 함수를 작성하세요
System.out.printf("%d는 소수인가 : %s\n", 3, isPrimeNumber(3));
System.out.printf("%d는 소수인가 : %s\n", 4, isPrimeNumber(4));
// 2) 두 정수를 전달받아서, 두 정수 사이의 primeNumber로 구성된 배열을 반환하는 함수를 작성하세요
int[] arr = getPrimeNumberArray(1, 100);
// 3) 1부터 1000사이의 소수로 구성된 정수 배열을 출력하세요
System.out.println(Arrays.toString(arr));
// 4) 1부터 100사이의 소수는 모두 몇개인가?
int count = getPrimeNumberArray(1, 100).length;
System.out.printf("1부터 100사이의 소수는 %d개입니다\n", count);
// 5) 배열의 내용을 문자열로 변환하여 한 줄당 10개씩 문자열을 만들어서 반환하는 함수
// 배열을 전달, 문자열을 반환
String result = getStringFromArray(arr);
System.out.println(result);
}
static String getStringFromArray(int[] arr) {
String str = "";
for(int i = 0; i < arr.length; i++) {
str += String.format("%2d", arr[i]);
str += i % 10 == 9 ? "\n" : ", ";
}
str = str.substring(0, str.length() - 2);
return str;
}
static boolean isPrimeNumber(int num) {
if(num == 1) {
return false;
}
for(int i = 2; i < num; i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
static int[] getPrimeNumberArray(int from, int to) {
int[] arr = null;
int cnt = 0;
for(int i = from; i < to; i++) {
if(isPrimeNumber(i)) {
cnt++;
}
}
arr = new int[cnt];
int index = 0;
for(int i = from; i < to; i++) {
if(isPrimeNumber(i)) {
arr[index] = i;
index += 1;
}
}
return arr;
}
}