Excel İçinde Asallık Kontrolünü ve En Küçük Böleni İnceleyin
Asal sayıları kolayca bulma dosyası, girilen tam sayıların asal olup olmadığını VBA ile tanımlanmış işlevler üzerinden kontrol eden makrolu bir Excel çalışma kitabıdır. Ana sayfada sayı girdileri ve bunlara karşılık gelen sonuçlar yan yana bulunur. Bir sayı asal değilse kullanılan işlev, uygun durumda sayıyı bölen en küçük pozitif asal böleni de sonuç metnine ekler. Böylece yalnız sınıflandırma değil, sınıflandırmayı açıklayan bir bölen bilgisi de görülebilir. Çalışma kitabı xlsm biçimindedir ve VBA kodunun korunması gerekir.Dosyanın başlangıçta görünen tek sayfası asal isimlidir. Bu sayfada B7:B25 aralığında örnek tam sayılar, C7:C25 aralığında bu sayılara başvuran işlevler bulunmaktadır. Sağ bölümde G8 hücresine girilen sayı için F8 hücresinde ayrı bir deneme sonucu yer alır. Üst bölümdeki A1 hücresi ise isteğe bağlı asal sayı listeleme makrosunun üst sınırını belirler. Hücrelerdeki sayı kontrolü ile listeleme makrosu farklı kullanım biçimleridir. Tek sayı incelemek için listeleme makrosunun çalıştırılması gerekmez.
Dosya Ne İşe Yarar
Bir tam sayının yalnız bir ve kendisi tarafından bölünüp bölünmediği kontrol edilerek asallık sonucu elde edilir. İki veya üç girildiğinde sonuç Asaldır şeklindedir. Daha büyük bir sayı başka bir tam sayıya kalansız bölünüyorsa asal olmadığı belirtilir. Ana sonuç işlevi bölen bilgisini de verdiği için örneğin kırk dokuz sayısında yedi böleni görülebilir. Bu kullanım, sayının asal olmama nedenini tek sonuç hücresinde incelemeyi sağlar.Sayı girdisi değiştirildiğinde ilgili sonuç yeniden hesaplanır. Sayfadaki örnekler büyük tam sayılar üzerinde bölen bilgisini göstermektedir. Kullanıcı bu örneklerin yerine kendi incelemek istediği sayıları yazabilir. Dosya dışarıdan sayı listesi indirmez ve internet bağlantısına dayanan bir veri kaynağı kullanmaz. Hesaplama, çalışma kitabının VBA modülündeki bölünebilme kontrolü üzerinden yürütülür. Bu nedenle dosyanın açıklaması ile sonuçları, mevcut işlevin kabul ettiği sayı aralığı ve girdi kuralları birlikte değerlendirilmelidir.
Sayfa Sayfa İçerik
asal sayfasında B6 hücresindeki Sayı başlığı, altında bulunan girdi sütununu tanımlar. C6 hücresindeki Asallık Sonucu başlığının altında her girişin sınıflandırması bulunur. B7 hücresindeki değer C7 sonucunu, B8 hücresindeki değer C8 sonucunu besler. Aynı düzen yirmi beşinci satıra kadar devam eder. Bu bölümde on dokuz gerçek hücre formülü bulunmaktadır. Girdi değerleri değiştirilebilir, hesaplama hücrelerindeki işlev başvurularının ise korunması gerekir.Sağ tarafta G8 hücresinde başlangıç örneği olarak on yedi sayısı bulunmaktadır. F8 hücresindeki gerçek formül bu girdiyi kullanır ve asallık sonucunu gösterir. F9 hücresindeki açıklama, işlevin asal olmayan bir sayı için bölen bilgisini de verdiğini anlatır. Bu açıklama güncel dosyada satır kaydırılarak okunabilir duruma getirilmiştir. F8 deneme alanı, uzun örnek listenin tamamını değiştirmeden tek bir sayıyla işlevi incelemek için kullanılabilir.
Listeleme makrosu çalıştırıldığında AsalListe isimli ayrı bir çıktı sayfası oluşturulur veya bu makronun daha önce oluşturduğu çıktı yenilenir. Bu sayfa dosyanın başlangıç paketinde bulunmaz. Çıktı sayfasının A1 hücresinde Asal Sayı Listesi başlığı, B1 hücresinde kullanılan üst sınır yer alır. Asal sayılar A2 hücresinden itibaren aşağı doğru yazılır. Bu ayrım sayesinde mevcut asal sayfasındaki örnek girdiler ve sonuç formülleri listeleme işlemi sırasında üzerine yazılarak kaybolmaz.
Kullanılan İşlevler ve Hesaplama Mantığı
Çalışma kitabında Asalmı ve Asalmı_Asalsa_Kaça_Bölünür isimli iki kullanıcı tanımlı işlev korunmuştur. İlk işlev sayının asal olup olmadığını metin olarak döndürür. İkinci işlev, asal olmayan pozitif tam sayılarda en küçük bölen bilgisini de sonuca ekler. Ana sayfada kullanılan hücre formülleri ikinci işleve dayanır. Bu isimler Excel'in her yeni çalışma kitabında hazır bulunan standart işlevler değildir. İşlevlerin kullanılabilmesi için ilgili VBA kodunun dosyada bulunması gerekir.Hesaplama önce iki ve üç gibi başlangıç durumlarını değerlendirir. Daha büyük çift sayılarda iki böleni doğrudan tespit edilir. Tek sayılar için üçten başlayarak tek bölen adayları denenir. Kontrol, aday bölenin sayının karekökünü aşmadığı bölümle sınırlıdır. Uygulamada bu sınır sayı bölü bölen karşılaştırmasıyla hesaplanır. Bulunan ilk bölen sonuçta gösterilir. Başka bir bölen bulunmazsa sayı asal olarak sınıflandırılır. İşlev bütün bölenlerin listesini üretmez ve asal çarpanlara tam ayrıştırma yapmaz.
Güncel işlevler en fazla bir trilyon değerindeki tam sayıları kabul eder. Bu sınır, çalışma kitabındaki hesaplamanın açık bir kullanım aralığıdır. Daha büyük bir pozitif değer girildiğinde sınır mesajı gösterilir. Ondalık girdi için tam sayı girilmesi gerektiği belirtilir. Sayısal olmayan metin için geçerli sayı mesajı döndürülür. Boş hücre boş sonuç verir. Negatif tam sayılar, sıfır ve bir asal olarak sınıflandırılmaz. Kaynak hücre hata değeri taşıyorsa bu hata sessizce başarılı sonuç gibi gösterilmez.
Nasıl Kullanılır
Dosya masaüstü Microsoft Excel uygulamasında açılır. VBA işlevlerinin yeniden hesaplanabilmesi için makrolara kurumun güvenlik politikası çerçevesinde izin verilmelidir. Genel makro güvenlik ayarlarının kapatılması gerekmez. Makrolar çalışmıyorsa kayıtlı örnek sonuçların görülmesi, yeni sayıların hesaplanabildiği anlamına gelmez. Bu durumda bir giriş değiştirilerek karşılık gelen sonuç hücresinin güncellendiği kontrol edilmelidir. VBA desteklemeyen önizleme ortamlarının dosyanın bütün işlevlerini yürüttüğü varsayılmamalıdır.Tek sayı denemek için G8 hücresine bir tam sayı yazılır ve F8 sonucu incelenir. Birden fazla örneği karşılaştırmak için B7:B25 aralığındaki girişler düzenlenir. C sütunundaki formüller aynı satırdaki B hücrelerine başvurur. Yeni satır eklenecekse formül yeni satıra kopyalanmalı ve hücre başvurusu kontrol edilmelidir. Dosyada yapılandırılmış Excel tablosu bulunmadığından formül alanının kendiliğinden genişlediği varsayılmamalıdır. Sayı sınırı veya girdi türü mesajları, sonuçlar değerlendirilmeden önce giderilmelidir.
Asal sayı listesi hazırlamak için A1 hücresine iki ile yüz bin arasında bir tam sayı girilir. Ardından listele isimli makro çalıştırılır. Makro, iki sayısından başlayarak belirtilen üst sınıra kadar bulunan asal sayıları ayrı çıktı sayfasına yazar. Üst sınırın kendisi asal ise listeye dahil edilir. Geçersiz sınırda çıktı yenilenmez. AsalListe adında başka amaçla kullanılan bir sayfa varsa ve beklenen çıktı başlığı yoksa makro bu sayfanın üzerine yazmaz.
Güncellemede Düzeltilen İşlevler
Özgün VBA modülündeki geçersiz kDim bildirimi düzeltilerek kodun çalışabilir olması sağlanmıştır. İşlev isimleri ve ana listedeki on dokuz formül korunmuştur. Daha önce formül gibi görünen metin olarak saklanan F8 örneği, G8 hücresine başvuran gerçek çalışan formüle dönüştürülmüştür. Böylece bu bölüm yalnız açıklama metni olarak kalmaz, girilen sayının sonucunu gerçekten üretir. Girdi doğrulamaları da eklenerek negatif, ondalık, boş ve geçersiz değerlerin davranışı açık biçimde tanımlanmıştır.Özgün listeleme yordamında çok büyük bir üst sınıra doğru süren ve etkin sayfanın hücrelerine yazan bir döngü bulunmaktaydı. Güncel sürümde yordamın adı korunmuş, çalışma sınırı A1 hücresinden alınan kontrollü bir aralığa bağlanmıştır. Listeleme ayrı çıktı sayfasına yapılmaktadır. Kullanılan üst sınır çıktı üzerinde kaydedilir. İşlem sırasında uygulama durum çubuğu kullanıldığında önceki durum işlem sonunda geri yüklenir. Eski sürümler korunur ve güncel dosya ayrı sürüm olarak sunulur.
Doğrulama ve Kullanım Sınırları
Güncel dosya kaydedilip gerçek Microsoft Excel uygulamasında yeniden açılarak kontrol edilmiştir. Küçük asal sayılar, bileşik sayılar, kare sayılar, büyük örnek tam sayılar ve kabul edilen üst sınır denenmiştir. Negatif sayı, sıfır, bir, ondalık, boş hücre ve sayısal olmayan metin için beklenen sonuçlar ayrıca incelenmiştir. Sağdaki deneme hücresinin giriş değişikliğine bağlı olarak yeniden hesaplandığı doğrulanmıştır. Listeleme makrosu on ve yüz üst sınırlarıyla denenmiş, iki sayısının listeye dahil olduğu ve ana sayfa verilerinin korunması kontrol edilmiştir.Dosyada grafik, Power Query sorgusu veya dış veri bağlantısı bulunmamaktadır. Araç, belirtilen aralıktaki tam sayıların bölünebilme kontrolünü örneklemektedir. Şifreleme anahtarı üretimi veya sınırsız büyüklükte sayı araştırması için ayrı bir sistem olduğu ileri sürülmez. Büyük asal adayları, küçük örneklerden daha uzun hesaplama süresi gerektirebilir. Galeri görüntüsü güncel dosyanın gerçek asal sayfasını gösterir. Listeleme sonucu ise makro çalıştırıldıktan sonra belirlenen üst sınıra göre oluşturulur.