증명만 있으면 됩니다. 골드바흐 추측.

우선 제목은 트랜스포머 모델Attention Is All You Need의 원문에서 영감을 얻었다.

미해결 수학 문제만 풀면 쉽게 부자가 될 수 있을 거라 생각했는데, '가장 간단한 수학 미제'라는 키워드로 인터넷 서핑을 하다가 수학에 천박해서 포기하고 말았다.

내가 관심을 갖는 문제 중 하나는 "Goldbach Conjecture"를 시도하는 것입니다. 매우 간단합니다. 2보다 큰 정수만 2개의 소수에서 더할 수 있습니다. 대답하지 않고 내 컴퓨터 과학 배경을 사용하여 증명하는 것이 흥미 롭습니다.

골드바흐 추측은 1742년 크리스티안 골드바흐가 오일러에게 보낸 편지에서 처음 언급되었습니다. 그의 편지에서 골드바흐는 4보다 크거나 같은 숫자도 두 소수의 합으로 나타낼 수 있다고 보고했지만, 다음의 참을 증명하는 데는 실패했습니다. 그의 추측.

저는 C++ 프로그래밍 언어를 사용하여 증명했습니다. 이것은 대략 다음과 같습니다.

먼저 정수를 반환하는 함수를 선언합니다.

int is_prime(int n){
    int num = 1;
    for (int i = 2; i < n/2; i++){
        if((n%i) == 0){
            return num-1;
        }
    }
    return num;
}


다음 단계는 이 수학적 문제의 논리에 대한 절차를 만드는 것입니다.

void solve(){
    int number = 0;
    int primes[100000] = {2};
    int j = 0;
    while(true){
        std::cout<<"Input even number:";
        std::cin>>number;
        if(number > 2 && number % 2==0){

            if(primes[j]<number){
                for (int i = primes[j]+1; i < number; i++){
                    if(is_prime(i) == 1){
                        j++;
                        primes[j] = i;
                    }
                }       
            }
            for (int i = 0; i < j; i++){
                for (int k = 0; k < j; k++){
                    if(primes[i] + primes[k] == number){
                        std::cout<<primes[i]<<" + "<<primes[k]<<" = "<<number<<std::endl;
                        break;
                    }
                }
            }
        }
        else{
            std::cout<<"Input must a even numbers"<<std::endl;
        }
    }
}


마지막 단계는 메인 함수에 프로시저를 선언하는 것입니다.

int main(){
    solve();
    return 0;
}


다음은 출력입니다. 숫자 120을 입력했다고 가정해 보겠습니다.


잘못된 문법이나 시제를 전달했을 수도 있습니다. 죄송합니다. 저는 영어를 잘 못합니다 :)

참조
Wikipedia

List of unsolved math problem

좋은 웹페이지 즐겨찾기