kütüphanesi grafiksel kullanıcı arayüzünü (GUI) oluşturmak için devreye girer. Burada program kodlarını kullanarak gerekli arayüz iyileştirmelerini yapabilirsiniz. Arayüz penceresi kullanıcıdan bir sayı girişi alır ve “Hesapla” düğmesine basıldığında tüm bu özellikleri hesaplayıp ekranda uygun metin kutularında gösterir. Program ayrıca girilen sayının asal çarpanlarını üs gösterimiyle biçimlendirir. Bu, öğrencilerin asal çarpanlara ayırma işlemini hem sayı düzeyinde görmelerine hem de sembolik olarak kavramalarına yardımcı olur. Net Fikir » yazılım » Asal çarpan Hesaplama Modülü (Python Kod)
Asal çarpan Hesaplama Modülü (Python Kod)
Etiketler :
asal sayılar
çarpanlara ayırma
mükemmel sayı
programlama
setup
yazılım
Asal sayı, yalnızca 1 ve kendisi olmak üzere iki pozitif böleni olan bir doğal sayıdır. Bir sayının asal sayı olabilmesi için 1’den büyük olması ve kendisinden başka hiçbir sayıya tam bölünmemesi gerekir. En küçük asal sayı 2’dir ve aynı zamanda tek çift asal sayıdır. 1 asal sayı olarak kabul edilmez, çünkü yalnızca bir pozitif böleni vardır. Asal sayılar, matematikte sayıların yapı taşları olarak kabul edilir ve diğer doğal sayılar bu asal sayıların çarpımıyla elde edilebilir. Asal çarpan, bir sayının asal olan çarpanlarına denir. Örnek olarak 20 sayısının asal çarpanları 2 ve 5 tir. 1, 4, 10, ve 20 ise 20 sayısını tam olarak böldüğü halde asal çarpan değildir.
Fibonacci sayısı, Fibonacci dizisinde yer alan bir sayıdır. Bu dizi, 1 ile başlar ve her sayı kendisinden önce gelen iki sayının toplamı olarak elde edilir. Yani dizinin ilk terimi 1 sonraki terim 1’in toplamı olan 1, üçüncü terimi 1 ile 1’in toplamı olan 2, dördüncü terimi 1 ile 2’nin toplamı olan 3 şeklinde devam eder. Bu şekilde oluşan sayı dizisi 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... şeklindedir. Fibonacci sayıları hem matematikte hem de doğada sıkça karşımıza çıkar. Bitkilerin yaprak dizilimleri, çiçeklerin yapısı ve bazı hayvanların büyüme düzenleri gibi doğal örneklerde bu sayıların izine rastlanabilir. Ayrıca bilgisayar bilimleri ve algoritmalar gibi teknik alanlarda da kullanılır.
Yukarıda anlatılan matematiksel tanımlara benzer şekilde, sayı özelliklerini görmek amacıyla bir program hazırlama gereği duyduk. Buna göre “Asal Çarpan Hesaplama Modülü” adlı Python uygulaması, öğrencilerin ve matematik meraklılarının bir sayının özelliklerini detaylı biçimde inceleyebilecekleri çok işlevli bir modül olarak tasarlanmıştır. Bu programın odak noktası, kullanıcı tarafından girilen pozitif bir tam sayının asal çarpanlarını ve daha birçok matematiksel niteliğini hesaplamak ve göstermek, böylece sayılarla ilgili kavrayışı derinleştirmektir. Programın işlevleri arasında şunlar yer alır: Verilen sayının asal olup olmadığını belirleme, Sayının asal çarpanlarını bulma, Sayının pozitif ve negatif tüm bölenlerini listeleme, Asal olmayan pozitif bölenleri ayırma, Tek ve çift pozitif bölenleri tespit etme, Pozitif bölenlerin toplamını hesaplama, Pozitif bölenlerin çarpımını bulma, Sayının Fibonacci dizisinde olup olmadığını kontrol etme, Sayının “mükemmel sayı” olup olmadığını belirleme, Sayının palindrom (tersiyle aynı) olup olmadığına bakma, Sayının karekök değerini hesaplama, Sayının asal çarpanlarının üs gösterimli biçimini hazırlama
Teknik yapısı bakımından program, Python’un standart ve yaygın kütüphanelerini kullanır. Örneğin math kütüphanesi karekök işlemleri ve sayısal hesaplamalar için kullanılırken, tkinter
Amaç açısından bu modülün temel hedefi, sayılarla ilgili birçok kavramı tek bir uygulamada kapsayarak, kullanıcıların asal çarpanlara ayırma, bölenler, mükemmel sayı, Fibonacci, palindrom gibi kavramları bir bütünlük içinde öğrenmesini sağlamaktır. Öğrencilerin soyut kavramları somut örneklerle görerek pekiştirmesini, sayısal düşünme becerilerini geliştirmesini destekler. Aynı zamanda öğretmenler için de derste anlatılan teoriyi uygulamaya dönüştürecek bir yardımcı rol üstlenir. Kullanım açısından uygulama oldukça kullanıcı dostudur. Kullanıcı,
arayüzde bir sayı girer, “Hesapla” butonuna basar; program da anında
sayının tüm yukarıda sayılan özelliklerini hesaplayıp ekranda gösterir.
Hatalı ya da negatif giriş yapıldığında uygun uyarılar verilir. Böylece
hem öğretmen tarafından ders materyali olarak hem de öğrencilerin
bireysel alıştırmaları için kullanışlı bir araç haline gelir.
Anlatılan sayı özelliklerini hesaplayan Python kodlu matematik programı, görseli aşağıda verilmiştir. Resmi büyütüp yazılımın özelliklerini inceleyebilirsiniz. Programın "exe" formatlı hali ve açık kaynak kodu da ekli dosyada ilave edilmiştir. Derslerinizde kullanabilirsiniz. Kadir PANCAR
import tkinter as tk
from tkinter import messagebox
import math
def asal_mi(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def asal_carpanlar(n):
i = 2
carpmalar = []
sayi = n
while i <= sayi:
if sayi % i == 0:
carpmalar.append(i)
sayi //= i
else:
i += 1
return carpmalar
def mukemmel_mi(n):
toplam = 0
for i in range(1, n):
if n % i == 0:
toplam += i
return toplam == n
def fibonacci_mi(n):
a, b = 0, 1
while a < n:
a, b = b, a + b
return a == n
def uslu_yazim(n):
sup_dict = {
'0': '\u2070',
'1': '\u00B9',
'2': '\u00B2',
'3': '\u00B3',
'4': '\u2074',
'5': '\u2075',
'6': '\u2076',
'7': '\u2077',
'8': '\u2078',
'9': '\u2079'
}
carpanlar = asal_carpanlar(n)
sonuc = {}
for c in carpanlar:
sonuc[c] = sonuc.get(c, 0) + 1
parcalar = []
for k, v in sonuc.items():
if v == 1:
parcalar.append(str(k))
else:
uss = ''.join(sup_dict[d] for d in str(v))
parcalar.append(f"{k}{uss}")
return " * ".join(parcalar)
def pozitif_bolenler(n):
return [i for i in range(1, n+1) if n % i == 0]
def negatif_bolenler(n):
return [-i for i in pozitif_bolenler(n)] + pozitif_bolenler(n)
def asal_olmayan_pozitif_bolenler(n):
return [i for i in pozitif_bolenler(n) if not asal_mi(i)]
def tek_pozitif_bolenler(n):
return [i for i in pozitif_bolenler(n) if i % 2 != 0]
def cift_pozitif_bolenler(n):
return [i for i in pozitif_bolenler(n) if i % 2 == 0]
def pozitif_bolenler_toplami(n):
return sum(pozitif_bolenler(n))
def pozitif_bolenler_carpimi(n):
carpanlar = pozitif_bolenler(n)
carpim = 1
for c in carpanlar:
carpim *= c
return carpim
def palindrom_mi(n):
s = str(n)
return s == s[::-1]
# === GUI ===
pencere = tk.Tk()
pencere.title("Tam Bölen ve Asal Çarpan Hesaplayıcı v: 1.0")
pencere.geometry("1350x700")
pencere.config(bg="#B0B0B0")
program_adi = tk.Label(pencere, text="Sayının Çarpanları ve Bölen Hesaplayıcı", font=("Arial", 16, "bold"), fg="darkblue", bg="#B0B0B0")
program_adi.pack(pady=20)
giris_buton_frame = tk.Frame(pencere, bg="#B0B0B0")
giris_buton_frame.pack(pady=5)
giris_etiket = tk.Label(giris_buton_frame, text="Bir sayı giriniz", font=("Arial", 12), bg="#B0B0B0", fg="gray")
giris_etiket.pack(side="left", padx=10)
giris = tk.Entry(giris_buton_frame, font=("Arial", 12, "bold"), bg="lightblue", justify="center", fg="red", width=15)
giris.pack(side="left", padx=(0,10))
def hesapla():
try:
n = int(giris.get())
if n <= 0:
messagebox.showerror("Hata", "Lütfen pozitif bir tam sayı giriniz.")
return
except:
messagebox.showerror("Hata", "Geçerli bir tam sayı giriniz.")
return
asal_durum = "Evet, Asal Sayı" if asal_mi(n) else "Hayır, Asal Değil"
mukemmel_durum = "Evet, Mükemmel" if mukemmel_mi(n) else "Hayır, Mükemmel Değil"
fibonacci_durum = "Evet, Fibonacci" if fibonacci_mi(n) else "Hayır, Fibonacci Değil"
karekok = f"{math.sqrt(n):.5f}"
uslu = uslu_yazim(n)
asal_bolenler = list(set(asal_carpanlar(n)))
pozitif_bolenler_list = pozitif_bolenler(n)
negatif_bolenler_list = [-x for x in pozitif_bolenler_list] + pozitif_bolenler_list
asal_olmayan = asal_olmayan_pozitif_bolenler(n)
tekler = tek_pozitif_bolenler(n)
ciftler = cift_pozitif_bolenler(n)
toplam = pozitif_bolenler_toplami(n)
carpim = pozitif_bolenler_carpimi(n)
palindrom_durum = "Evet, Palindrom" if palindrom_mi(n) else "Hayır, Palindrom Değil"
ciftler_yaz = str(ciftler) if len(ciftler) > 0 else "Çift Böleni Yoktur"
for key, value in {
"Sayı Asal mı?": asal_durum,
"Sayı Mükemmel mi?": mukemmel_durum,
"Fibonacci Dizisi mi?": fibonacci_durum,
"Sayının Karekökü": karekok,
"Sayının Üslü Biçimde Yazımı": uslu,
"Sayının Asal Çarpanları": str(asal_bolenler),
"Pozitif Bölen Adedi": str(len(pozitif_bolenler_list)),
"Sayının Pozitif Bölenleri": str(pozitif_bolenler_list),
"Sayının Negatif Bölenleri": str(negatif_bolenler_list),
"Asal Olmayan Pozitif Bölenleri": str(asal_olmayan),
"Tek Pozitif Bölenleri": str(tekler),
"Çift Pozitif Bölenleri": ciftler_yaz,
"Pozitif Bölenleri Toplamı": str(toplam),
"Pozitif Bölenleri Çarpımı": str(carpim),
"Sayı Palindrom mu?": palindrom_durum
}.items():
kutular[key].config(state="normal")
kutular[key].delete("1.0", "end")
kutular[key].insert("1.0", value)
kutular[key].config(state="disabled")
def temizle(event):
if giris.get() == "":
for key in kutular:
kutular[key].config(state="normal")
kutular[key].delete("1.0", "end")
kutular[key].config(state="disabled")
giris.bind("<KeyRelease>", temizle)
buton = tk.Button(giris_buton_frame, text="Hesapla", command=hesapla, bg="gray", fg="white")
buton.pack(side="left")
etiketler = [
"Sayı Asal mı?",
"Sayı Mükemmel mi?",
"Fibonacci Dizisi mi?",
"Sayının Karekökü",
"Sayının Üslü Biçimde Yazımı",
"Sayının Asal Çarpanları",
"Pozitif Bölen Adedi",
"Sayının Pozitif Bölenleri",
"Sayının Negatif Bölenleri",
"Asal Olmayan Pozitif Bölenleri",
"Tek Pozitif Bölenleri",
"Çift Pozitif Bölenleri",
"Pozitif Bölenleri Toplamı",
"Pozitif Bölenleri Çarpımı",
"Sayı Palindrom mu?"
]
kutular = {}
kutu_frame = tk.Frame(pencere, bg="#B0B0B0")
kutu_frame.pack(padx=10, pady=10, fill="both", expand=True)
for i in range(3):
kutu_frame.grid_columnconfigure(i, weight=1)
for i, etiket in enumerate(etiketler):
frame = tk.Frame(kutu_frame, bd=2, relief="solid", padx=5, pady=5, bg="#FFFACD")
frame.grid(row=i // 3, column=i % 3, padx=8, pady=8, sticky="nsew")
tk.Label(frame, text=etiket, font=("Arial", 10, "bold"), fg="black", bg="#FFFACD").pack(anchor="w")
txt = tk.Text(
frame,
font=("Arial", 10, "bold"),
fg="#800000",
bg="#FFFACD",
wrap="word",
height=3,
width=40,
borderwidth=0,
relief="flat",
)
txt.pack(fill="both", expand=True)
txt.config(state="disabled")
kutular[etiket] = txt
# Kadir PANCAR
alt_cerceve = tk.Frame(pencere, bg="#B0B0B0")
alt_cerceve.pack(fill="x", side="bottom", padx=10, pady=5)
etiket_kadir = tk.Label(alt_cerceve, text="Kadir PANCAR", font=("Arial", 9, "italic"), bg="#B0B0B0", fg="black")
etiket_kadir.pack(anchor="e")
pencere.mainloop()
|
|
Takip et: @kpancar |
Aşağıdaki Yazılar İlginizi Çekebilir!!!
Matematik Konularından Seçmeler
matematik
(301)
geometri
(133)
ÖSYM Sınavları
(61)
trigonometri
(56)
üçgen
(49)
çember
(36)
sayılar
(32)
fonksiyon
(30)
türev
(26)
alan formülleri
(25)
analitik geometri
(23)
dörtgenler
(19)
denklem
(18)
limit
(18)
belirli integral
(14)
katı cisimler
(12)
istatistik
(11)
koordinat sistemi
(11)
fraktal geometri
(7)
materyal geliştirme
(7)
asal sayılar
(6)
elips
(3)
tümevarım
(3)
binom açılımı
(2)
hiperbol
(2)






0 yorum:
Fayda vermeyen ilimden Allah'a sığınırım. İlim; amel etmek ve başkalarıyla paylaşmak içindir. Niyetimiz samimiyetle insanlara yararlı olmaktır, akıbetimiz bu vesileyle güzel olsun. Dua eder, dualarınızı beklerim...
"Allah'ım; bana fayda sağlayacak ilimleri öğret ve ilmimi ziyadeleştir."
“Allahım! Sana teslim oldum, sana inandım, sana güvendim. Yüzümü, gönlümü sana çevirdim. İşlediğim tüm günahlarımı affeyle! Ey kalbleri çeviren Allahım! Kalbimi dînin üzere sâbit kıl. Beni Müslüman olarak vefât ettir ve beni sâlihler arasına kat!”
“Rabbim! Bizi doğru yola ilettikten sonra kalplerimizi eğriltme! Bize tarafından bir rahmet bağışla.Öne geçiren de sen, geride bırakan da sensin. Muhakkak ki lütfu en bol olan Sen’sin. Senden başka ilâh yoktur."
Lâ ilâhe illallah Muḥammedürrasulüllâh
KADİR PANCAR