Python Programlama Dilini Öğrenmek İsteyenler

Çevrimdışı yunushocam

  • Bilge Üye
  • *****
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
# 02 Nis 2017 23:54:08
[linkler sadece üyelerimize görünmektedir.]
ASAL SAYI PROGRAMININ KAYNAK KODLARINI GELİŞTİRMEK İSTEYENLER İÇİN PAYLAŞIYORUM.

from tkinter import *
import tkinter.ttk as ttk

root = Tk()
root.title("ASAL SAYI PROGRAMI")
root.wm_iconbitmap("ASAL.ico")
root.tk_setPalette("light blue")
root.resizable(width=FALSE, height=FALSE)
mainframe = ttk.Frame(root,padding='3 3 12 12')
mainframe.grid(column=0, row=0)
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight =1)

say=0
asalliste={}
asallist=[]
usluliste=[]

class asal_listele:
    def __init__(self):
        root1 = Tk()
        root1.transient()
        root1.title("ASAL SAYILARI LİSTELE")
        root1.wm_iconbitmap("ASAL.ico")
        mainframe = ttk.Frame(root1,padding='3 3 12 12')
        mainframe.grid(column=0, row=0)
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight =1)
       
        alt_sınır = ttk.Entry(mainframe, width =27)
        alt_sınır.grid(column = 1, row = 0)
               
        üst_sınır = ttk.Entry(mainframe, width =27)
        üst_sınır.grid(column = 1, row = 1)
               
        ttk.Label(mainframe, text ='Alt Sınırı Girin').grid(column = 0, row=0)
        ttk.Label(mainframe, text ='Üst Sınırı Girin').grid(column = 0, row=1)
       
        def asal_listele_alt_üst():
            alt=int(alt_sınır.get())
            üst=int(üst_sınır.get())
               
            if alt>1 and üst>1:
                işlem()
            else:
                root1 = Tk()
                root1.transient()
                root1.title("ASAL SAYILARI LİSTELE")
                root1.wm_iconbitmap("ASAL.ico")
                   
                metin= Text(root1, width=60,font="Helvetica 10 bold")
                metin.insert(END,"Uygun olmayan değerler girmemelisiniz. \n(Örneğin başlangıca 1 sayısını girmek gibi.)")
                metin.pack()
                       
        def işlem():
            global say,asalliste
            root2 = Tk()
            root2.transient()
            root2.title("ASAL SAYILARI LİSTELE")
            root2.wm_iconbitmap("ASAL.ico")
           
            alt=int(alt_sınır.get())
            üst=int(üst_sınır.get())
           
            scrollbar = Scrollbar(root2)
            scrollbar.pack(side=RIGHT, fill=Y)

            listbox = Listbox(root2, width=50,height=30,yscrollcommand = scrollbar.set )
           
            for i in range(alt,üst+1):
                bool = False
                for j in range(2,i):
                    if i % j == 0:
                        bool=True
                if bool == False:
                    say += 1
                    asalliste[say]=i
                    listbox.insert(END, str(i)+" sayısı asaldır.")

            listbox.insert(END, " ")       
            listbox.insert(END, str(say)+" tane asal sayı bulundu.")           
            listbox.pack(side=LEFT, fill=Y)
            scrollbar.config(command=listbox.yview)   
                 
            root2.mainloop()                       
                       
        ttk.Button(mainframe, text='Listele',command=asal_listele_alt_üst).grid(column=1, row=2)
       
        root1.mainloop()
class sayı_asal_mı:
    def __init__(self):
        root3 = Tk()
        root3.transient()
        root3.title("SAYI ASAL MI?")
        root3.wm_iconbitmap("ASAL.ico")
        mainframe = ttk.Frame(root3,padding='3 3 12 12')
        mainframe.grid(column=0, row=0)
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight =1)
       
        asal = ttk.Entry(mainframe, width =27)
        asal.grid(column = 1, row = 0)

        ttk.Label(mainframe, text ='Sayıyı Giriniz').grid(column = 0, row=0)
        def araştır():
            root4 = Tk()
            root4.transient()
            root4.title("ASAL SAYI MI")
            root4.wm_iconbitmap("ASAL.ico")
           
            scrollbar = Scrollbar(root4)
            scrollbar.pack(side=RIGHT, fill=Y)

            listbox = Listbox(root4, width=50,height=10,yscrollcommand = scrollbar.set )
           
            asalmı=int(asal.get())

            for i in range(asalmı,asalmı+1):
                bool = False
                for j in range(2,i):
                   if i % j == 0:
                        bool=True
                if bool == False:
                    listbox.insert(END, str(asalmı)+" sayısı asaldır.")
                else:
                    listbox.insert(END, str(asalmı)+" sayısı asal değildir.")
                   
            listbox.pack(side=LEFT, fill=Y)
            scrollbar.config(command=listbox.yview)   
                     
            root4.mainloop()         


        ttk.Button(mainframe, text='Araştır',command=araştır).grid(column=1, row=2)
        root3.mainloop()

class asal_çarpanlar:
    def __init__(self):
        root5 = Tk()
        root5.transient()
        root5.title("SAYININ ASAL ÇARPANLARI")
        root5.wm_iconbitmap("ASAL.ico")
        mainframe = ttk.Frame(root5,padding='3 3 12 12')
        mainframe.grid(column=0, row=0)
        mainframe.columnconfigure(0, weight=1)
        mainframe.rowconfigure(0, weight =1)
       
        asal_ç = ttk.Entry(mainframe, width =27)
        asal_ç.grid(column = 1, row = 0)

        ttk.Label(mainframe, text ='Sayıyı Giriniz').grid(column = 0, row=0)

        def çarpan_bul():
            global asallist,usluliste
            root6 = Tk()
            root6.transient()
            root6.title("SAYININ ASAL ÇARPANLARI")
            root6.wm_iconbitmap("ASAL.ico")
           
            scrollbar = Scrollbar(root6)
            scrollbar.pack(side=RIGHT, fill=Y)

            listbox = Listbox(root6, width=50,height=10,yscrollcommand = scrollbar.set )
           
            aç=int(asal_ç.get())
            listbox.insert(END, str(aç)+" Sayısının Asal Çarpanları")
            listbox.insert(END, " ")
            for i in range(2,aç):
                while True:
                    if aç % i == 0:
                        asallist.append(i)
                        aç/=i
                    else:
                        if i in asallist:
                            usluliste.append(str(i)+"^"+str(asallist.count(i)))
                        break
                   
            listbox.insert(END, usluliste)
            listbox.pack(side=LEFT, fill=Y)
            scrollbar.config(command=listbox.yview)
            asallist=[]
            usluliste=[]
            root6.mainloop()         

        ttk.Button(mainframe, text='Asal Çarpanlarını Bul',command=çarpan_bul).grid(column=1, row=2)
        root5.mainloop()
       
ttk.Button(mainframe, text='Sayı Asal mı?',command=sayı_asal_mı).grid(column=1, row=0)
ttk.Button(mainframe, text='Asal Sayıları Listele',command=asal_listele).grid(column=2, row=0)
ttk.Button(mainframe, text='Asal Çarpanlarına Ayır',command=asal_çarpanlar).grid(column=3, row=0)

root.mainloop()



Hocam şu kodu
  for j in range(2,i):

şununla değiştirirseniz büyük sayı aralıklarını hesaplarken hissedeceğiniz bir hıza kavuşursunuz.
  for j in range(2,i**0.5):

Bunun yanında 2 ile bölünebilmeye ayrıdan bakar ve sonra da
  for j in range(3,i**0.5,2):
kodu ile devam ederseniz hız 1 kat daha artar.

Çevrimdışı yunushocam

  • Bilge Üye
  • *****
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
# 03 Nis 2017 00:05:42
Hızı 10 milyona kadar asalları listeleme durumunda hesaplayın değişiklikler sonrası tekrar hesaplayın muhtemelen farklılık hissedilir seviyede olacaktır.

Bu programa eklemeler de yapabilirsiniz, bir zamanlar asal sayılar üzerinde çalışmıştım, o kimsenin bulamadığı "asal sayı kuralı" nı çok aradım. Bu nedenle asal sayılarla ilgili çalışma yapanların kullanabileceği bölümler eklenebilir.
Mesela artışlarda bir anlamlılık var mı diye insanlar sürekli merak eder, artışları döken bir program,
Veya 0 ve 2 dışındaki bütün çift sayıların iki asal toplamı şeklinde yazılabileceği ile ilgili bir fikir var, bunun üzerine çalışanlar için de girilen sayının kaç tane asal toplanan çifti olduğunu ve bunları listeleyen bir program da olabilir.
Veya ikiz asalları bulan bir program da yapabilirsiniz,
Veya kuzen asalları bulan bir program
liste çok uzun ama güzel bir başlangıç yaptınız, teşekkürler.
 

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 03 Nis 2017 16:19:30
[linkler sadece üyelerimize görünmektedir.]
Hatta üst 1 ise göstermeye gerek olmadığından kod şu şekilde de kullanılabilir.

asalliste = []
usluliste=[]
sayi=45

for i in range(2,sayi+1):

    while True:
     if sayi % i ==0:
           asalliste.append(i)
           sayi/=i
     else:
         if i in asalliste:
            if str(asalliste.count(i))=="1":
                usluliste.append(str(i))
            else:
                usluliste.append(str(i) + "^" + str(asalliste.count(i)))
         break


print (usluliste)




[linkler sadece üyelerimize görünmektedir.]
asalliste = []
usluliste=[]
sayi=457076565

for i in range(2,sayi+1):

    while True:
     if sayi % i ==0:
           asalliste.append(i)
           sayi/=i
     else:
         if i in asalliste:
            usluliste.append(str(i) + "^" + str(asalliste.count(i)))
         break


print (usluliste)

Yazdıklarınızı uygulayarak aşağıdaki gibi bir sonuç ekrana geliyor.

Link aktif olunca indirme linki:
[linkler sadece üyelerimize görünmektedir.]

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 03 Nis 2017 20:28:22
Asal sayı listelede şöyle bir hata oluşuyor. Programı kapatmadan tekrar listele dendiğinde bir öncekinin 2 katı kadar toplam asal sayısını veriyor. Bunu düzelttim.

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 03 Nis 2017 20:32:31
Asal sayı programında listeleme seçeneğinin düzeltilmiş hali

Aktif olunca indirme linki:
[linkler sadece üyelerimize görünmektedir.]

Çevrimiçi smyi

  • Bilge Meclis Üyesi
  • *****
  • 4.628
  • 34.099
  • 4. Sınıf Öğretmeni
  • 4.628
  • 34.099
  • 4. Sınıf Öğretmeni
# 04 Nis 2017 14:44:14
Kütüphane programı. bu kadar uzun olmasının nedeni tam bitirecekken vb6 dan vaz geçip herşeyi sıfırdan b4j de hazırlamam.
inceleyip gördüğünüz hataları belirtirseniz sevinirim.
ayrıca Hatalar klasörü var ters giden birşey olursa kaydı tutulur.

java kurulu olmalı. kütüphane.jar dosyasını çalıştırın. kuruluma gerek yok.zipten çıkarın yeter.

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 04 Nis 2017 19:37:53
[linkler sadece üyelerimize görünmektedir.]
Kütüphane programı. bu kadar uzun olmasının nedeni tam bitirecekken vb6 dan vaz geçip herşeyi sıfırdan b4j de hazırlamam.
inceleyip gördüğünüz hataları belirtirseniz sevinirim.
ayrıca Hatalar klasörü var ters giden birşey olursa kaydı tutulur.

java kurulu olmalı. kütüphane.jar dosyasını çalıştırın. kuruluma gerek yok.zipten çıkarın yeter.
Öncelikle emeğinize sağlık. Programınızı beğendim. Görebildiğim kadarıyla hataların resimlerini ekte paylaşıyorum.

Çevrimiçi smyi

  • Bilge Meclis Üyesi
  • *****
  • 4.628
  • 34.099
  • 4. Sınıf Öğretmeni
  • 4.628
  • 34.099
  • 4. Sınıf Öğretmeni
# 05 Nis 2017 10:22:43
[linkler sadece üyelerimize görünmektedir.]
Öncelikle emeğinize sağlık. Programınızı beğendim. Görebildiğim kadarıyla hataların resimlerini ekte paylaşıyorum.
vaktinizi ayırıp, detaylı bir inceleme yaptığınız için teşekkür ederim. programlamadan anlayan bir insanın görüşleri çok değerli oluyor.
benim göremediğim hataları görmüşsünüz. teşekkürler. bu hataları da giderdikten sonra, programlar kısmına eklerim :)

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 05 Nis 2017 12:56:41
İkiz asalları listelemeyle uğraşıyorum. Programda yarıya kadar geldim. Orada bir çıkış yolu arıyorum. Şöyle ki;
İkiz asalları ekranda listelerken (23 25) ikilisini de ekrandaki listeye dahil ediyor. Bunu engellemenin yolunu arıyorum. Bilgisi olanlardan bunu önlemenin yolunu paylaşırlarsa sevinirim.

Çevrimdışı yunushocam

  • Bilge Üye
  • *****
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
# 05 Nis 2017 14:36:26
[linkler sadece üyelerimize görünmektedir.]
İkiz asalları listelemeyle uğraşıyorum. Programda yarıya kadar geldim. Orada bir çıkış yolu arıyorum. Şöyle ki;
İkiz asalları ekranda listelerken (23 25) ikilisini de ekrandaki listeye dahil ediyor. Bunu engellemenin yolunu arıyorum. Bilgisi olanlardan bunu önlemenin yolunu paylaşırlarsa sevinirim.
Hocam bence önce aralıktaki asalları listeleyin. Sonra listede ardı şık elemanlardan fark iki olanları başka listeye çekin. Önceki asal sayı algoritmasını kullanın

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 05 Nis 2017 17:27:25
[linkler sadece üyelerimize görünmektedir.]
Hocam bence önce aralıktaki asalları listeleyin. Sonra listede ardı şık elemanlardan fark iki olanları başka listeye çekin. Önceki asal sayı algoritmasını kullanın
Önce aralıktaki asalları listeye çektim. Sonra listedeki elemanları for döngüsüne alarak ardışık elemanları sırayla birbirinden çıkararak farkı 2'ye eşit olanları ekranda listeledim. Sonra da kaç tane ikiz asal olduğunu yazdırdım.

Aktif olunca indirme linki:
[linkler sadece üyelerimize görünmektedir.]

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 05 Nis 2017 17:58:50
İkiz asal sayıları bulan programın kodlarını paylaşıyorum.

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 05 Nis 2017 23:03:39
[linkler sadece üyelerimize görünmektedir.]
Önce aralıktaki asalları listeye çektim. Sonra listedeki elemanları for döngüsüne alarak ardışık elemanları sırayla birbirinden çıkararak farkı 2'ye eşit olanları ekranda listeledim. Sonra da kaç tane ikiz asal olduğunu yazdırdım.

Aktif olunca indirme linki:
[linkler sadece üyelerimize görünmektedir.]
Programı tekrar yükledim.
İndirme linki:
[linkler sadece üyelerimize görünmektedir.]

Çevrimdışı yunushocam

  • Bilge Üye
  • *****
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
  • 1.645
  • 46.396
  • 3. Sınıf Öğretmeni
# 06 Nis 2017 06:14:50
[linkler sadece üyelerimize görünmektedir.]
Programı tekrar yükledim.
İndirme linki:
[linkler sadece üyelerimize görünmektedir.]

Hocam programı inceledim. Çok güzel, ellerinize ve emeğinize sağlık. Yalnız asal kontrolündeki algoritmada bir değişiklik yapabilirsiniz. Sayının asal olup olmadığını araştırırken asal olmasa da döngü sonun kadar devam ediyor herhalde, çok basamaklı çift bir sayı girdim, normalde ikiye bölündüğünü farkettiği an programın sayı asal değil çıktısı vermesi lazım ama program yine de işlemini sonuna kadar bitirmeyi bekliyor.

Çevrimdışı gokselgursu

  • Bilge Meclis Üyesi
  • *****
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
  • 4.153
  • 14.967
  • 1. Sınıf Öğretmeni
# 06 Nis 2017 08:09:07
[linkler sadece üyelerimize görünmektedir.]
Hocam programı inceledim. Çok güzel, ellerinize ve emeğinize sağlık. Yalnız asal kontrolündeki algoritmada bir değişiklik yapabilirsiniz. Sayının asal olup olmadığını araştırırken asal olmasa da döngü sonun kadar devam ediyor herhalde, çok basamaklı çift bir sayı girdim, normalde ikiye bölündüğünü farkettiği an programın sayı asal değil çıktısı vermesi lazım ama program yine de işlemini sonuna kadar bitirmeyi bekliyor.
Teşekkürler. Algoritmada değişiklik yapmam gerekiyor. Bitince paylaşayım.

 


Egitimhane.Com ©2006-2023 KVKK