쿠르릉칵칵
219
2019-06-12 10:03:21
4
194

골드바흐 추측


package prime;


import java.util.Scanner;


public class GoldbachConjecture {// 골드바흐의 추측


public static boolean[] check = new boolean[10001];


public static boolean isPrime() {

int i;

check[0] = check[1] = false;

for (i = 2; i < check.length; i++) {

check[i] = true;

} // arr배열에 0~N까지 값 1 부여

for (i = 2; i * i < check.length; i++) {

if (check[i] = true) {

for (int k = i * 2; k < check.length; k += i)

check[k] = false;

} // i=2인경우 2의배수들은 0으로 지운다

}

return true;

}


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int num;

int input = 0;

///

isPrime();

while (true) {

num = sc.nextInt();

int small = input/2;

int big = input/2;

for (int i = 0; i < num; i++) {

input = sc.nextInt();

if (input % 2 == 1 || input<=4) {

break;

}

for(int j=0;j<input;j++) {

if((check[small] && check[big])==true) {

break;

}

small--;

big++;

}//for

}//for

System.out.println(small+" "+big);

}

}// main <=10000 짝수 입력시 나오는 소수들의 합으로 이루어짐

}


이렇게 짰는데요 .. 컴파일 해서 갯수입력하고 첫 input을 넣으니까
if((check[small] && check[big])==true) 여기서 ArrayIndexoutofBoundsException = -1이 뜨는데
왜 그런걸까요??ㅠㅠ 알고리즘 지금 공부하는데 어렵네용 ㅠ

0
0
  • 답변 4

  • ....
    2019-06-12 10:12:57 작성 2019-06-12 10:18:54 수정됨

    골드바흐 추측이 아직 증명할 방법이 없는 말 그대로 추측입니다.

    숫자의 범위를 제한하면 증명할 수 있는데

    범위를 제한해 주신 건가요?


    골드바흐 추측이 2의 배수는 두 개의 소수의 합으로 보여줄 수 있다인데

    소수의 합이 2의 배수인지에 대한 것이 없습니다.

    0
  • 쿠르릉칵칵
    219
    2019-06-12 10:18:01

    니플 네 10000보다 작은 짝수에 대해서 입니다

    0
  • ....
    2019-06-12 10:30:59

    if (check[i] = true) {


    if (check[i] == true) {

    이렇게 수정되어야 하지않을까 생각됩니다.


    0
  • 쿠르릉칵칵
    219
    2019-06-12 10:35:21

    니플

    그래도 여전히 같은 에러가 뜨네요....ㅠ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.