Python ile asal sayı uygulamaları

Python ile asal sayı uygulamaları

Python programlama dilinin Türkiye'deki en yetkin adreslerinden biri olan istihza.com forumlarında oldukça fazla ilgi gören bir konu yayınlanmıştı. Bu konuda asal sayıların Python ile nasıl bulunacağı anlatılıyordu. Biz de bu yazımızda asal sayıların Python ile nasıl tespit edileceği ve verilen bir aralıktaki asal sayıların listesinin alınabileceği bir Python programını istifadenize sunacağız.

Önce asal sayıyı hatırlatarak başlayalım. Bir asal sayı, yalnızca 1'e ve kendisine bölünebilen bir sayıdır. Bu anlamda 1, 2 ve 3 asal sayı olarak başlar, ancak 4, 1'e, 4'e ve 2'ye bölünebildiği için asal sayı değildir. 19 bir asal sayıdır, çünkü 1'e ve 19'a bölünür. Bu hatırlatmadan sonra programımıza geçelim:

 

#!/usr/bin/env python

#-*-coding: cp1254 -*-

 

#Not: İlk satır yalnızca GNU/Linux sistemlerinde gereklidir.

#Program hiçbir şekilde GNU/Linux ortamlarında kullanılmayacaksa

#bu satır yazılmayabilir.

#Not: İkinci satır burada yazdığımız gibi ASCII dışı karakterlerin

#düzgün görüntülenmesi için gereklidir. Microsoft Windows için UTF-8

#kod çözücüsünün iyi çalışmadığına dair duyumlar almaktayız. Dolayısı

#ile programın Microsoft Windows'ta düzgün çalışması için bu satırda

#kodlama cp1254 ile değiştirilmelidir.

#Bu programın iki işlevi vardır. Birinci işlev verilen bir sayının asal

#olup olmadığını sorgular. İkinci işlev ise verilen bir sayı aralığındaki

#asal sayıları bildirir. Programı çalıştırmak için Windows'ta IDLE programını

#python kütüphanesi ile birlikte kurmanız gerekir. GNU/Linux sistemlerde

#uçbirimden "python program_adi.py" yazarak programı çalıştırabilirsiniz.

#Burada program_adi için dosyayı kaydettiğinizde size sorulan, Türkçe harf,

#soru işareti, büyüktür, küçüktür, yıldız gibi özel karakterler içermeyen bir

#isim seçmelisiniz. Python programları genel kabul olarak .py uzantısını kullanır.

 

def AsalKontrol(sayi):

    if sayi % 2 == 0:

        return False

    for deger in range(3,sayi,1):

        if sayi % deger == 0:

            return False

    return True

 

#def ile ba?layan fonksiyon çağrısında AsalKontrol diye bir isim seçtik. Fonksiyon

#parametreli olarak, yani bir sayı kullanarak  çalışmak zorunda olduğu için parantez

#içine sayı değişkenini koyduk. for döngüsüne girildiğinde 3'ten başladık, 2'yi dahil

#etmedik. Çünkü bir sayı bile uzun döngülerde zaman açısından aleyhimize işleyebilir.

#Denenen sayı, ilgilenilen sayıya tam bölünüyorsa o sayı asal değildir,

#bunun kontrolünü yaptık. Asal olmayan sayılar için False, asal sayılar için True işlecini

#kullanarak fonksiyonu tamamladık.

 

print "***Asal sayı programı***\n0) Çıkış\n1) Bir sayının asal olup olmadığını sorgulama\n\

2)Verilen bir aralıktaki asal sayıları listeleme"

 

#Ekrana tırnak içindeki ifadeyi bastırdık, \n ifadesi bir satır alta inmek için kullanılır.

 

secim = int(raw_input("Seçiminiz: "))

 

#Kullanıcıdan seçimini bir tamsayı olarak al?yoruz. Hata kontrolü yapmak mümkün, ama biz

#kolaylık olması açısından yapmıyoruz, kullanıcı bir sayı değil de bir harf girişi yaparsa

#program çökecektir.

 

while True:

    if secim == 1:

        print "Bir sayının asal olup olmadığını sorgulamak istiyorsunuz."

        sorgu = int (raw_input("Sayıyı girin: "))

        if AsalKontrol(sorgu) == True:

            print "Girdiğiniz %d sayısı asaldır…"%(sorgu)

            break

        else:

            print "Girdiğiniz %d sayısı asal değildir…"%(sorgu)

            break

    elif secim == 2:

        print "Belirli bir aralıktaki asal sayıların listesini almak istiyorsunuz."

        baslangic = int(raw_input("Başlangıç değerini girin: "))

        bitis = int(raw_input("Bitiş değerini girin (girdiğiniz sayının dahil olması için \n\

o sayının bir fazlasını girin): "))

        AsalListe = []

        for sayilar in range(baslangic, bitis, 1):

            if AsalKontrol(sayilar) == True:

                AsalListe.append(sayilar)

        print "Asal sayı listesi:\n",AsalListe

        break

    elif str(secim) not in "012":

        continue

    else:

        pass

print "Program sona erdi…"

Etiketler

+ Yorum bulunmuyor

Yorum yap