folder Tahribat.com Forumları
linefolder C - C++
linefolder Bir Sayının Tek Mi Çift Mi Oldugunu Gösteren Program



Bir Sayının Tek Mi Çift Mi Oldugunu Gösteren Program

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    monoton bunu yazdı:
    -----------------------------

    bide şunu yazın 1 den 250000 e kadar olan asal sayıları en hızlı bulan program bu konuda kendine güvenen varsa sidik yarıştırabiliriz :)


    -----------------------------

     

     http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes  algoritmasinin  C de uygulanmis hali. Malesef ben yazmadim :)

    1. #include
    2. #include
    3. #include
    4. #include
    5.  
    6. int main(){
    7.         int i;
    8.         printf("Find primes up to: ");
    9.         scanf("%i",&i);
    10.  
    11.         clock_t start, stop;
    12.         double t = 0.0;
    13.        
    14.         assert((start = clock())!=-1);
    15.        
    16.         //create prime list
    17.         int prime[i];
    18.         int c1, c2, c3;
    19.        
    20.         //fill list with 0 - prime
    21.         for(c1 = 2; c1 <= i; c1++){
    22.                 prime[c1] = 0;
    23.         }
    24.        
    25.         //set 0 and 1 as not prime
    26.         prime[0]=1;
    27.         prime[1]=1;
    28.        
    29.         //find primes then eliminate their multiples (0 = prime, 1 = composite)
    30.         for(c2 = 2;c2 <= (int)sqrt(i)+1;c2++){
    31.                 if(prime[c2] == 0){
    32.                         c1=c2;
    33.                         for(c3 = 2*c1;c3 <= i+1; c3 = c3+c1){
    34.                                 prime[c3] = 1;
    35.                         }
    36.                 }
    37.         }
    38.        
    39.         stop = clock();
    40.         t = (double) (stop-start)/CLOCKS_PER_SEC;
    41.        
    42.         //print primes
    43.         for(c1 = 0; c1 < i+1; c1++){
    44.                 if(prime[c1] == 0) printf("%i\n",c1);
    45.         }
    46.         printf("Run time: %f\n", t)//print time to find primes
    47.        
    48. return 0;
    49. }
     
     
    Bu da C++ ve Java implementasyonlari,
     

    Java implementation

    public void runEratosthenesSieve(int upperBound) {

          int upperBoundSquareRoot = (int) Math.sqrt(upperBound);

          boolean[] isComposite = new boolean[upperBound + 1];

          for (int m = 2; m <= upperBoundSquareRoot; m++) {

                if (!isComposite[m]) {

                      System.out.print(m + " ");

                      for (int k = m * m; k <= upperBound; k += m)

                            isComposite[k] = true;

                }

          }

          for (int m = upperBoundSquareRoot; m <= upperBound; m++)

                if (!isComposite[m])

                      System.out.print(m + " ");

    }

    C++ implementation

    void runEratosthenesSieve(int upperBound) {

          int upperBoundSquareRoot = (int)sqrt((double)upperBound);

          bool *isComposite = new bool[upperBound + 1];

          memset(isComposite, 0, sizeof(bool) * (upperBound + 1));

          for (int m = 2; m <= upperBoundSquareRootm++) {

                if (!isComposite[m]) {

                      cout << m << " ";

                      for (int k = m * mk <= upperBoundk += m)

                            isComposite[k] = true;

                }

          }

          for (int m = upperBoundSquareRootm <= upperBoundm++)

                if (!isComposite[m])

                      cout << m << " ";

          delete [] isComposite;

    } 
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek
    SpArK bunu yazdı:
    -----------------------------

    monoton bunu yazdı:
    -----------------------------

    bide şunu yazın 1 den 250000 e kadar olan asal sayıları en hızlı bulan program bu konuda kendine güvenen varsa sidik yarıştırabiliriz :)


    -----------------------------

     

     

    TestDeveloped inDeterministicRunning timeNotes
    AKS primality test2002YesO(log6+ε(n)) 
    Fermat primality test NoO(k · log2n · log log n · log log log n)fails for Carmichael numbers
    Lucas primality test Yes requires factorization of n − 1
    Solovay–Strassen primality test1977No, error probability 2kO(k·log3 n) 
    Miller–Rabin primality test1980No, error probability 4kO(k · log2 n · log log n · log log log n) 
    Elliptic curve primality proving1977NoO(log5+ε(n))heuristic running time

     

     

    illa bu algoritmalari uygulatcan yani :) 

     

    not : senin algoritmanin complexity sini yaz bize :) ona gore bizde BigO  hesaplari yapip yaristiririz be ustad :) 


    -----------------------------

    burdan deneyin algoritma benim

    http://rapidshare.com/files/294794072/Project1.exe.html

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    g2k
    g2k's avatar
    Kayıt Tarihi: 03/Mayıs/2007
    Erkek

    Antikky bunu yazdı:
    -----------------------------

    g2k bunu yazdı:
    -----------------------------
    tahribat'ta böyle konular olması lazım işte. tartışma sitesine döndü artık iyice. yöneticilerin biraz daha sıkı olması lazım bu konuda bence.
    -----------------------------

    ne istiyonuz hoca yarın 9 a bölümebilme kuralını 7 dilde yazıp veriyimmi?bugün bu yarın o olsun ha ne dersin?
    1 seneye kalmaz tüm matematiği tüm dillerde nasıl yapılır öğrenmiş oluruz.

    aferin bize lan.


    -----------------------------

    'böyle konular' derken neyi kastettiğimi anlayamıyorsan hiçbişey söylemiyorum. hani programlama, teknoloji, bilgisayar üzerine daha çok diyorum.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

     

    burdan deneyin algoritma benim

    http://rapidshare.com/files/294794072/Project1.exe.html


    -----------------------------

     

     

    Indirdim ama sadece .exe uzantili bir dosya cikti.  Guvenlik politikalarim nedeniyle malesef acamam bu programi. Kod paylasmak istermisin burda veyahut yaptigin

    algoritmanin calisma zamanini soylemek ? 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek
    SpArK bunu yazdı:
    -----------------------------

     

    burdan deneyin algoritma benim

    http://rapidshare.com/files/294794072/Project1.exe.html


    -----------------------------

     

     

    Indirdim ama sadece .exe uzantili bir dosya cikti.  Guvenlik politikalarim nedeniyle malesef acamam bu programi. Kod paylasmak istermisin burda veyahut yaptigin

    algoritmanin calisma zamanini soylemek ? 


    -----------------------------

    verdiğin kodu denedim deli manyak bişi ama math kütüphanesi kullanılmış benim algoritmadan 3 kat daha hızlı.

    burda

    unsigned int s,k,i,c,r=250000;
    char dak,san,sal;

    int main(int argc, char **argv)
    {
    printf("\n1 - %d arasi asal testi icin bir tusa basin\n",r);
    getch();
    struct time t,t1;
    gettime(&t);
    for(k=3;k<r;k+=2){
    for(i=3;i<k/2;i+=2)
    if(!(k%i)){
    k+=2;i=3;
    }
    printf("%8d",k);
    ++c;
    }
    gettime(&t1);
    dak=t1.ti_min-t.ti_min;
    if(dak<0)
    dak+=60;
    san=t1.ti_sec-t.ti_sec;
    if(san<0){
    --dak;san+=60;
    }
    sal=t1.ti_hund-t.ti_hund;
    if(sal<0){
    --san;sal+=100;
    }
    printf("\n\n%d dakika %d saniye %d salisede \n\n1  %d arasi %d asal sayi bulundu\n",dak,san,sal,r,c+1/* +1 '2'için */);
       getch();
       return 0;
    }

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek
    biraz inceledimde iki algoritma hemen hemen aynı benim 2 ye böldüğüm yerde sqrt alınmış
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    SpArK bunu yazdı:
    -----------------------------

    Acaba ben mi algoritmani yanlis yazdim diye, birazdan bende kontrol edeyim kendimi. Simdilik ekran goruntulerini koyayim;

     

     

     


    -----------------------------

    abi 55, 65 falan çıkmış bunlar asal sayı değildir.Matematiksel olarak bir sayının asa sayı olması için ;

    2,3,4,5,6,7,8,9,10 a bölünmemesi lazım diye 1 den 10 a kadar listeletsek

    4 ü attık 2 var, 6 yı attık 2 ve 3 var, 8 i attık 4, 2 var, 9 u attık 3 var, 10 u attık 5, 2 var 

    geriye kalan

    2,3,5,7 ye bölünüyor mu ;

    11,13,17 => 2,3,5,7 ye   bölünmez.Demek ki asal sayı.

    isterse 67 olsunn.67 sayısı 2,3,5,7 ye bölünmez o halde asal sayıdır.

    Kasmaya gerek yok bir sayı 2,3,5,7 ye bölünmüyorsa asal sayııdır abi.Mantıken bu 

     

    kuytul bunu yazdı:
    -----------------------------
    tamam da 11,13,17,23 ...vs bölünebilir 8 1 basamaklı sayılarda bile asallığını bulabilecek bir şey. Gazetede okumuştum ibm yapmıştı sanırım çok gelişmiş bi şey tabi

    -----------------------------

    yukardaki mantıktan yola çıkarsak atıyorum 77 bir asal sayı mı ? değildir çünkü 7 ye bölünür.

    Asal sayı : kendisine ve 1 e bölünebilen sayıdır

    Yani 2,3,5,7 e bölünmeyecek.Şu anda düşündüm de istediğiniz sayıyı girin 2,3,5,7 sayılarına bölünmüyorsa asal sayıdır.

    19,27 diyelim 19 , 27 => 2,3,5,7 ye bölünmez...Demek ki asal sayı...

    Şimdi okulum var size php sini yazıcam.abc.def gibi bir asal sayı söylerseniz göreceksiniz ki onlarda 2,3,5,7 ye bölünmez.

     

     

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    Hadi alın arkadaşlar sizin için asal say hesaplayıcı yaptım;

    http://tarcan.tur0.org/say.php

    fazla bokunu çıkartmayın diye 4 basamağın üstüne saydırtmıyorum . İlla 4 basamağın üstüne çıkıcam derseniz localhsotta yapın ;

    <?php
    $say = '10' ; // kaçtan başlasın ?
    $kadar = '1000' ; // kaça kadar saysın ?
    while($say<=$kadar+1){
        // burada problem şu ; 10 içindeki 2,3,5,7 sayıları bizim programımızda bölünüyor bizde elle ekliyoruz.
        echo '1 sayısı asaldır<br>2 sayısı asaldır<br>3 sayısı asaldır<br>5 sayısı asaldır<br>7 sayısı asaldır<br>';
        if (($say % 2) != 0 and ($say % 3) != 0 and ($say % 5) != 0 and ($say % 7) != 0 ){
            echo $say . ' sayısı asaldır<br>';
        }
        $say++;
    }
    ?>

    ---

     Ben denedim hepsi asal sayı.Tek problemi 1 ile 10 arasındaki asal sayıları göstermiyor.Çünkü hepsini onlara bölüyoruz.

    Buda demek oluyor ki 10 dan sonrası doğru.Bir hatta varsa mantıkta söyleyin

    & kuytul;

    hocam 2,3,5,7 ye göre yaptım gördüğüm kadarıyla oldu.

    ---

    Diğer arkadaşlar ;

    Asal sayı hespalatırken 2,3,5,7  ye bölünüyor mu diye bakarsa program olur....

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    zumsuk bunu yazdı:
    -----------------------------
    -----------------------------

     

    zumsuk ustadim, 1-2 sayfa onceden itirabaren okursan hepsini ve konuyu, olayi cozdugumuzu anlarsin. Arkadasin verdigi kodu ben alip derledikten sonra ciktisini verdim ekran goruntusu olarak 5 in kati bazi sayilaraida output olarak verdi icin, asal olmayanlarida bastirdigini gostermek icin. Oda farkina varinca zaten duzelttik bu hatayi :) Arkadasin kendiside ve bende asal sayi konularini iyi bildigimizden suphe yok. Fakat malesef ki seni duzeltmek zorundayim;

    --------------------------------------------------------------------------------

    Matematiksel olarak bir sayının asa sayı olması için ;

    2,3,4,5,6,7,8,9,10 a bölünmemesi lazım diye 1 den 10 a kadar listeletsek

    4 ü attık 2 var, 6 yı attık 2 ve 3 var, 8 i attık 4, 2 var, 9 u attık 3 var, 10 u attık 5, 2 var 

    geriye kalan

    2,3,5,7 ye bölünüyor mu ;

    11,13,17 => 2,3,5,7 ye   bölünmez.Demek ki asal sayı.

    isterse 67 olsunn.67 sayısı 2,3,5,7 ye bölünmez o halde asal sayıdır.

    Kasmaya gerek yok bir sayı 2,3,5,7 ye bölünmüyorsa asal sayııdır abi.Mantıken bu

    --------------------------------------------------------------------------------

     

     malesef ki bildigin yanlis, keske boyle olsaydi da cok buyuk asal sayilari kolayca anlayip hesaplayabilseydik, o zaman RSA dedigimiz asal sayilara dayanan kriptoloji teknigimiz daha bir guvensiz olurdu.

    Bunu senin yerine ben soyliyeyim, bir sayinin asal olmasi 1 ve kendisi haricinde hic bir boleninin olmamasi demektir.  13 * 11 =  141 ;  141 asal sayi degildir cunku kendisi 2 asal sayinin carpimidir yani , 11, 13  bu sayinin bolenleridir. senin dedigin 2,3,5,7 teorisinin eksik oldugunu anlamissindir umarim.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Hadi alın arkadaşlar sizin için asal say hesaplayıcı yaptım;

    http://tarcan.tur0.org/say.php

    fazla bokunu çıkartmayın diye 4 basamağın üstüne saydırtmıyorum . İlla 4 basamağın üstüne çıkıcam derseniz localhsotta yapın ;

    <?php
    $say = '10' ; // kaçtan başlasın ?
    $kadar = '1000' ; // kaça kadar saysın ?
    while($say<=$kadar+1){
        // burada problem şu ; 10 içindeki 2,3,5,7 sayıları bizim programımızda bölünüyor bizde elle ekliyoruz.
        echo '1 sayısı asaldır<br>2 sayısı asaldır<br>3 sayısı asaldır<br>5 sayısı asaldır<br>7 sayısı asaldır<br>';
        if (($say % 2) != 0 and ($say % 3) != 0 and ($say % 5) != 0 and ($say % 7) != 0 ){
            echo $say . ' sayısı asaldır<br>';
        }
        $say++;
    }
    ?>

    ---

     Ben denedim hepsi asal sayı.Tek problemi 1 ile 10 arasındaki asal sayıları göstermiyor.Çünkü hepsini onlara bölüyoruz.

    Buda demek oluyor ki 10 dan sonrası doğru.Bir hatta varsa mantıkta söyleyin

    & kuytul;

    hocam 2,3,5,7 ye göre yaptım gördüğüm kadarıyla oldu.

    ---

    Diğer arkadaşlar ;

    Asal sayı hespalatırken 2,3,5,7  ye bölünüyor mu diye bakarsa program olur....

     

     

    --

    abi yanlis anlama ama iyi guldurdun :)

Toplam Hit: 36057 Toplam Mesaj: 84