Goldbach Varsayımı

Goldbach şöyle varsayımda bulunmuş Asal olmayan her teksayı şu formatta yazılabilir.
Asal +2*(Asal veya1 )^2
Örneğin:9 = 7 + 2×1^2
15 = 7 + 2×2^2
Ama daha sonraları bu varsayımın yanlış olduğu ispatlanmış . Bu varsayımı bozan ilk sayı kaçtır?

Varsayımın orijinali Asal+2*(sayı)^2 idi ama ben sayının çok büyük bişey olcağını düşündüğüm için değiştirdim eğer bulabirsek bunu da bulalım :slight_smile:

5 mi?
3 + 2 * 1 ** 2 = 5

Şuradaki formata göre;
asal + 2 = asal olmayan tek sayı gibi bir anlam da çıkıyor. Hatta siz örneğini de yapmışsınız:

Ben ilk cümleden asal tek sayılarla ilgili hiçbir koşul çıkartamadım, bizim bu kurala uymayan ve asal olmayan bir tek sayı bulmamız lazım.

1 Beğeni

Arkadaş bir format gösteriyor, asal olmayan bütün tek sayıların bu formata uyduğu varsayılmış ve bu varsayımı destekleyen 2 tane örnek paylaşılmış. Daha sonra arkadaş demiş ki ama bu varsayımı bozan sayılar var. Varsayımı bozan sayı, formattaki işlemleri uyguladığımızda sonucu asal olan bir sayı değil midir, aksi taktirde asal olmayan bir tek sayı zaten varsayımı desteklemiş olmaz mı? Dolayısıyla bizim bu işlem sonucunda bir asal sayı bulup varsayımın bu sayı için geçerli olmadığını kanıtlamamız gerekmiyor mu?
İfade şu şekilde:

Goldbach şöyle varsayımda bulunmuş Asal olmayan her teksayı şu formatta yazılabilir.

Asal +2*(Asal veya1 )^2

Cümleleri öğelerine ayırma konusunda izlediğimiz yollar çok farklı sanırım :smile: Orhan Bey gelince ne kastettiğini daha ayrıntılı bir şekilde ifade eder.

Kesinlikle doğru anlamışsınız
Demek istediğim şu teksayı(asal olmayan) bulacağız ve aşağıdaki formata uymayacak ve bu en az kaç

Aslında bulmamız gereken sayı asal olmayan bir tek sayı ve bu sayı oradaki kurala göre yazılamıyor

Yanlış anlamışım. :confused:

Galiba buldum. Bu kuralı bozan asal olmayan ilk sayı 5777 sayısı, ikinci asal olmayan sayı 5993 sayısı.
Çok fazla ileri gidemedim. Çünkü baya zaman alıyor. Ama aşağıdaki sayılar kurala uymuyor:

17
137
227
977
1187
1493
5777
5993
#include <stdio.h>

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

int find_prime(int n){
    int i = 1;
    int count = 0;
    while (count != n){
        if (is_prime(i) != 0){
            count += 1;
            if (count == n){
                return i;
            }
        }
        i += 1;
    }
}

int *all_primes(){
    static int array[3000];
    for (int i = 1; i < 3000; i++){
        array[i] = find_prime(i);
    }
    return array;
}

int main(){
    int *p;
    int count = 3;
    p = all_primes();
    int x;
    for (int i = 1; i < 3000; i++){
        for (int j = 1; j < 3000; j++){
            for (int k = 1; k < 3000; k++){
                if (count == p[j] + 2 * (k * k)){
                    x = 1;
                    break;
                }
            }
            if (x == 1){
                break;
            }
        }
        if (x != 1){
            printf("%d\n", count);
        }
        x = 0;
        count += 2;
    }
    return 0;
}

Edit: Bu sonucu bulduktan sonra google’da goldbach 5777 diye bir arama yaptım aşağıdaki sayfayı buldum. Bu sayfadan bir alıntı paylaşmak istiyorum:

There also exist odd composite Stern numbers: the only known ones are 5777 and 5993. Goldbach once incorrectly conjectured that all Stern numbers are prime.

2 Beğeni

bir çözümde bende gelsin sizin yaptığınız asallarıda kapsıyor bu arada asal olmayan tek demiştik ama ufak bir if ile hallolur :slight_smile:

import sympy

n=1
liste=[]
istenen=False
while n <5801and istenen==False :
    a=1
    while a<n:
        if sympy.isprime(a)==True:

            b=1
            while b<n**(0.5):
                if n==a+(2*(b**2)):
                    liste.append(n)

                    if sympy.isprime(n-2)==False and  n-2 not  in liste :
                        print(n-2)
                        istenen==True
                b=b+1
        a=a+1

    n=n+2
print(set(liste))
1 Beğeni

birde ilk kısımda ben farklılaştırmıştım ikinciside asal veya 1 di onun cevabınıda paylaşıyorum

#burada b de asal alınmıştır ama orjinalinde yok
import sympy
n=1
liste=[1]
istenen=False
while n <1000 and istenen==False :
    a=1
    while a<n:
        if sympy.isprime(a)==True:
            b=1
            while b<n**(0.5):
                if sympy.isprime(b) == True or b == 1:
                    if n==a+(2*(b**2)):
                        liste.append(n)


                    if  sympy.isprime(n-2)==False and n-2 not  in liste:
                        istenen=True
                        print(n-2)

                b=b+1
        a=a+1
    n=n+2
1 Beğeni