Matematik Hesap Makineleri
Modülü Hesaplama Makinesi


Modülü Hesaplama Makinesi

İki sayının bölümünden kalanı Modülü Hesaplama Makinesi ile anında bulun. Pozitif veya negatif sayılarda mod alma işlemini öğrenin ve ücretsiz hesaplayın.

Modül

1

Hesaplamanızda bir hata oluştu.

İçindekiler Tablesi

  1. Modülüs Hesaplama Makinesi Olmadan Manuel Hesaplama
    1. Örnek
  2. Saat Gösteriminde Modülüs Prensibi
    1. Örnek
  3. Modülüs İşleminin Kullanım Alanları
    1. Çift ve Tek Sayıları Belirleme
    2. Birim Dönüştürme İşlemleri
    3. Artık Yıl Hesaplama
  4. Rastgele Sayı Üretimi
    1. Kriptografi (Şifreleme)
  5. Sonuç

Modülü Hesaplama Makinesi

Modülüs işlemi, bir bölme işleminden elde edilen kalanı bulma yöntemidir. Bu işlemin en temel özelliği, kalanı her zaman bir tam sayı olarak döndürmesidir.

Diyelim ki üç çocuğunuz var ve içinde 20 adet şeker bulunan bir kutu aldınız. Tüm şekerleri çocuklarınız arasında adil bir şekilde paylaştırmak, artanları ise bölüp parçalamadan kendinize ayırmak istiyorsunuz. Çocuklarınız henüz okulda. Bu yüzden bölme işleminden kalanı önceden hesaplayıp, artan şekerlerin tadını hemen çıkarabilirsiniz.

İşte tam bu noktada modülüs operatörünü kullanabilirsiniz. Matematikte ve programlamada bu işlem genellikle % işareti veya mod ifadesi ile gösterilir. Küçük sayılarla uğraşırken bu hesaplamayı zihinden yapmak kolaydır. Ancak büyük sayılar söz konusu olduğunda, çevrimiçi bir modülüs hesaplama makinesi kullanmak işinizi çok daha kolaylaştıracaktır.

İlgili denklem şu şekilde ifade edilebilir:

Bölünen = (Bölüm × Bölen) + Kalan

Verdiğimiz örnekte:

  • bölünen 20'dir (toplam şeker sayısı);
  • bölen 3'tür (çocuk sayısı);
  • bölüm 6'dır (her çocuk için düşen şeker sayısı);
  • kalan 2'dir (kendinize ayırabileceğiniz şeker sayısı).

Modülüs işlemini kullanarak bunu formüle dökersek şu şekilde yazabiliriz:

x % y = r

veya

x mod y = r

Burada x bölüneni, y böleni ve r ise kalanı temsil eder.

Bizim örneğimizde bu durum:

20 % 3 = 2

Modülüs Hesaplama Makinesi Olmadan Manuel Hesaplama

Konuyu daha iyi anlamak için pratik bir durumu örnek alalım.

Örnek

Wayan, Bali'de yaşıyor ve altı odalı küçük bir misafirhane inşa ediyor. Banyoları fayansla kaplamayı planlıyor. Komşusu Gede ise kendi otelinin inşaatını yeni bitirmiş ve elinde kalan fayansları Wayan'a büyük bir indirimle satmayı teklif ediyor.

Komşusu deposunu kontrol ettiğinde her birinde 4 adet (60 × 60 cm) fayans bulunan 15 kutu ve dışarıda 2 adet tekli fayans buluyor. Bu da toplamda 62 fayans anlamına geliyor. Gede, elindeki tüm fayansları tek seferde satmak niyetinde.

Şimdi Wayan'ın, bu fayanslarla tam olarak kaç banyoyu kaplayabileceğini ve geriye kaç fayans kalacağını hesaplaması gerekiyor.

Peki, elinizin altında bir mod hesaplama aracı olmadan mod alma işlemi manuel olarak nasıl yapılır?

Wayan, misafirhanesindeki standart bir banyonun ölçülerini alıyor ve her bir banyo için tam 14 fayansa ihtiyacı olduğunu hesaplıyor.

Şimdi manuel hesaplama adımlarına geçelim!

  1. Başlangıç sayısını (bölüneni) belirleyin. Bizim senaryomuzda bu rakam, komşunun teklif ettiği toplam fayans sayısı olan 62'dir.
  2. Böleni belirleyin. Bölen, standart bir banyo için gereken fayans sayısı olan 14'tür.
  3. Bölüneni bölene bölün ve sonucu aşağı doğru en yakın tam sayıya yuvarlayın. 62 / 14 = 4,428571428571429 çıkar. Bunu 4'e yuvarlarız. Bu demek oluyor ki Wayan, elindeki fayanslarla tam 4 banyoyu kaplayabilir.
  4. Elde ettiğiniz tam sayı sonucunu bölen ile çarpın. Yani 4 × 14 = 56. Bu sayı, dört banyo için harcanacak toplam fayans miktarıdır.
  5. Bu çarpım sonucunu orijinal bölünenden çıkarın. Son adımda 62 - 56 = 6 işlemini yaparız. Bu, Wayan'ın elinde 6 adet fazla (artan) fayans kalacağı anlamına gelir.

Basitleştirilmiş ve matematiksel olarak ifade edilmiş haliyle bu işlemi şu şekilde yazabiliriz:

62 % 14 = 6

veya

62 mod 14 = 6

Wayan bu teklifin harika bir fırsat olduğuna karar veriyor; çünkü fayans kesim hataları veya kırılma risklerine karşı her zaman yaklaşık %10'luk bir yedek fayans payı bırakması gerektiğini biliyor. Geriye kalan iki banyo için gereken fayansları ise yerel bir yapı marketten satın alacak.

Gördüğünüz gibi, bir çevrimiçi mod hesaplama makinesi tüm bu uzun manuel işlemlere gerek kalmadan bu sonucu size saniyeler içinde verebilirdi.

Saat Gösteriminde Modülüs Prensibi

"Modüler aritmetik" olarak bilinen matematik dalı, döngüsel yapılarla ilgilenir. Bu kavramı zihninizde canlandırmanın en kolay yolu, 12 saatlik döngüye sahip klasik bir saat kadranı düşünmektir. Bir matematikçinin gözünde bu saat kadranı aslında mod 12'yi ifade eder.

Eğer 251 saatin günlere tam olarak bölünüp bölünmediğini, yani geriye kalan saat olup olmadığını merak ediyorsanız, işlemi

251 mod 24

şeklinde uygulayabilirsiniz.

Bu işlemin sonucu 11'dir. Kalan sıfır olmadığı için cevap hayır; 251 saat günlere tam olarak bölünmez! Yalnızca sonuç 0 çıktığında bölme işleminin kalansız (tam) gerçekleştiğini söyleyebiliriz.

Örnek

Daniel, Atlanta'dan Miami'ye giden bir otobüse binecektir. Otobüs öğleden sonra saat 1'de (13:00) hareket ediyor ve yolculuk tam 15 saat sürüyor. Peki Daniel Miami'ye vardığında saat kaç olacak? Modüler aritmetik ile bu işlemi şöyle ifade ederiz:

1 + 15 mod 12

Bu işlemin sonucu 4'tür. Dolayısıyla, Daniel Miami'ye vardığında saat sabahın 4'ü olacaktır.

Modülüs İşleminin Kullanım Alanları

Çift ve Tek Sayıları Belirleme

Modül operatörünün en temel ve yaygın kullanımlarından biri, bir sayının tek mi yoksa çift mi olduğunu tespit etmektir. Bu işlem x % 2 formülü ile yapılır ve sonuç her zaman ya 0 ya da 1 çıkar. Çift sayılar 2'ye tam bölündükleri için sonuç her zaman 0 olurken, tek sayılarda kalan daima 1'dir.

Programlamada modülüs işleminin en popüler kullanım senaryolarından biri, bir tablo oluştururken satır renklerini ardışık olarak değiştirmektir. Örneğin, satırları sırasıyla açık mavi ve açık gri yapmak istediğinizde, yazılımın o an tek mi yoksa çift mi bir satırda olduğunu anlaması için mod (kalan bulma) işlemi kullanılır.

Birim Dönüştürme İşlemleri

Birim dönüştürme, modül operasyonunun pratik hayattaki en tipik örneklerinden biridir. Genellikle dakika, inç veya santimetre gibi küçük birimleri; saat, mil veya kilometre gibi daha büyük birimlere çevirmek istediğimizde sıkça karşımıza çıkar. Ondalık veya kesirli sayılar, zaman ve mesafe gibi ölçümlerde her zaman anlaşılır sonuçlar vermeyebilir.

Örneğin, 373 dakikanın kaç saat ettiğini bulmak istiyorsak, cevabın "6 saat 13 dakika" olarak ifade edilmesi, "6.2166666666666666667 saat" gibi karmaşık bir ondalık sayıdan çok daha kullanışlı ve anlamlıdır.

Standart bir bölme işlemi (aşağı doğru en yakın tam sayıya yuvarlanarak) bize toplam saat sayısını verirken, arta kalan dakikaları bulmak için modülüs operasyonu devreye girer. Zaman, mesafe, basınç, enerji veya bilgisayar veri depolama alanları (byte, kilobyte vb.) ile uğraşırken birimleri hatasız dönüştürmek için her zaman bu formülü kullanabilirsiniz.

Artık Yıl Hesaplama

Modülüs operatörünün bir diğer zekice kullanımı, belirli bir yılın artık yıl olup olmadığını hesaplamaktır. Artık yıl, güneş takvimine göre bir yılın 365 yerine 366 gün sürdüğü yıldır. Bu fazladan gün, takvimimize 29 Şubat olarak eklenir.

Tarihsel olarak bakarsak; M.Ö. 45 yılının 1 Ocak gününde Roma diktatörü Jül Sezar, İskenderiyeli astronomlar tarafından geliştirilen yeni bir takvimi yürürlüğe soktu. Bu takvim, astronomik bir yılın yaklaşık 365,25 gün (365 gün ve 6 saat) olduğu hesaplamasına dayanıyordu ve tarih sahnesinde Jülyen Takvimi olarak adlandırıldı.

Her yıl oluşan 6 saatlik bu kaymayı telafi etmek amacıyla Sezar, artık yıl sistemini getirdi. Buna göre üç yıl boyunca bir yıl 365 gün kabul ediliyor, dört yılda bir ise Şubat ayına fazladan bir gün ekleniyordu.

Ancak zaman ilerledikçe bu basit kuralın tek başına yeterli olmadığı anlaşıldı.

Gerçekte ortalama tropikal yıl (iki ilkbahar ekinoksu arasında geçen süre) tam olarak 365 gün, 5 saat ve 49 dakikadır. Jülyen takvimi ile bu gerçek astronomik yıl arasındaki yaklaşık 11 dakikalık fark, her 128 yılda birikerek fazladan tam bir gün oluşturuyordu.

Biriken bu hataları düzeltmek ve gelecekte mevsimlerin takvimden kaymasını önlemek için Papa XIII. Gregory, 1582 yılında takvimde kapsamlı bir reform yaptı. Artık yıl hesaplaması için yeni ve hassas kurallar belirledi. 4'ün katı olan yıllar kuralı aynen korundu, ancak 100'ün katı olan yüzyıl başlarındaki yıllar (1700, 1800 vb.) için bir istisna getirildi. Buna göre, bu tür yıllar sadece 400 sayısına tam bölünebiliyorlarsa artık yıl kabul edilecekti.

Günümüzde de kullandığımız (Miladi) artık yıl belirleme kuralları böylece şu şekli aldı:

  • Yıl numarası 400'e tam bölünebilen yıllar artık yıldır.
  • Yıl numarası 100'e tam bölünebilen, ancak 400'e bölünemeyen yüzyıl yılları artık yıl değildir (örneğin 1700, 1800, 1900, 2100 yılları).
  • Yıl numarası 4'e tam bölünebilen diğer tüm yıllar artık yıldır.
  • Geriye kalan tüm yıllar standart yıldır (artık yıl değildir).

Sonuç olarak 1700, 1800 ve 1900 yılları artık yıl değildir, çünkü 100'e bölünürken 400'e tam bölünemezler. Ancak 1600 ve 2000 yılları, 400'ün tam katı oldukları için artık yıldır.

Şimdi bu işin matematiğine, yani mod hesaplamasına geri dönelim.

Kurallardan anladığımız üzere:

  • Eğer (yıl mod 4 = 0) ve (yıl mod 100 ≠ 0) ise, bu bir artık yıldır.
  • Eğer (yıl mod 400 = 0) ise, bu kesinlikle bir artık yıldır.
  • Diğer tüm koşullarda, bu bir artık yıl değildir.

Basit bir Python betiği (script) yazarak bir yılın artık yıl olup olmadığını saniyeler içinde hesaplayabilirsiniz. Bu kod parçası şöyle görünür:

year = int(input('Yıl girin: '))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):

	print(year, "bir artık yıldır.")

else:

	print(year, "bir artık yıl değildir.")

Programlamada ve yazılım geliştirmede modülüs operatörünün diğer popüler kullanım alanları şunlardır:

  • Bir sayının tek mi çift mi olduğunu tespit etmek;
  • Bir veri listesindeki her N'inci öğe üzerinde belirli bir işlemi tekrarlamak (döngüler);
  • Bir sayıyı belirli bir aralık içinde sınırlandırmak;
  • Sınırlı sayıda seçenek arasında sürekli dönmek (dairesel diziler/arrays oluşturmak);
  • Matematiksel olarak bir sayıyı tersine çevirmek;
  • Doğrusal (tek boyutlu) verileri çok boyutlu bir matrise dönüştürmek;
  • Veri dizilerinin birbirinin döndürülmüş (kaydırılmış) versiyonları olup olmadığını doğrulamak;
  • Web sitelerinde ve uygulamalarda sayfalandırma (pagination) sistemleri oluşturmak.

Rastgele Sayı Üretimi

Modülüs işlemi; bilgisayar donanımlarında ve telekomünikasyon sistemlerinde kontrol algoritmaları oluşturmak veya sınırlı bir aralıkta rastgele (random) sayılar üretmek için de sıklıkla kullanılır. Bunun en bilinen örneklerinden biri "Doğrusal Uyumlu Rastgele Sayı Üreteci" (Linear Congruential Generator) yöntemidir. Bu yöntem, 1949 yılında Derrick Henry Lehmer tarafından geliştirilmiştir.

Doğrusal uyumlu yöntem temelde şu matematiksel formüle göre çalışır:

$$X_{n+1} = (a × X_n + c)\mod m$$

Bu formülde:

  • m modülü (modülo değerini),
  • a çarpanı (multiplier),
  • c artış miktarını (increment) ve
  • X₀ ise başlangıç değerini (seed) temsil eder.

Örnek verecek olursak; m = 11, X₀ = 9, a = 9, c = 9 değerleri formüle yerleştirildiğinde şu rastgele sayı dizisini elde ederiz:

9, 2, 5, 10, 0, 9, 2, 5, 10, 0, 9

Kriptografi (Şifreleme)

Şifreleme uzmanları (kriptograflar) modülüs işlemini çok severler. Bunun en büyük sebebi, çok büyük devasa sayılarla kullanıldığında mod alma işleminin "tek yönlü fonksiyonlar" (one-way functions) adı verilen güçlü şifreleme yapıları oluşturabilmesidir. Bu özel matematiksel fonksiyonların özelliği, hesaplamanın bir yönde çok kolay yapılırken, tersten çözülmesinin neredeyse imkansız olmasıdır.

Örneğin; bir işlemin sonucunun 9 olduğunu ve bu işlemin "bir sayının karesini almak" olduğunu biliyorsanız, başlangıçtaki sayının 3 olduğunu hemen bulabilirsiniz. Tüm süreci geriye doğru kolayca zihninizde canlandırabilirsiniz. Ancak size "bir sayının 29'a bölümünden kalanın (mod 29) 9 olduğunu" söylersem, başlangıçtaki orijinal sayıyı bulmanız çok daha karmaşık ve zordur.

İşte tam da bu asimetrik zorluk derecesi, kriptografların en büyük silahıdır. Devasa asal sayılar üretmek, kırılmaz şifreler yaratmak ve dijital güvenlik için kriptografik anahtarlar oluşturmak adına kalanlı bölme işleminden (modüler aritmetik) faydalanırlar.

Sonuç

İster elinizdeki nesneleri saklama kutularına eşit olarak paylaştırmaya çalışın, ister devasa bir sayının başka bir sayıya kalansız bölünüp bölünemediğini bulmak isteyin, isterseniz de sadece zamanla ilgili bir birim dönüşümü yapın; modülüs işlemi her zaman imdadınıza yetişir. Hayatın içinden gelen tüm bu problemlerde, bölme işlemindeki "kalan", en az "bölüm" kadar kritik bir öneme sahiptir.

Gündelik hayatta karşılaştığımız bazı mod problemleri basit ve zihinden çözülebilir düzeydedir. Ancak veriler büyüdüğünde ve işler karmaşıklaştığında, hatasız ve hızlı bir sonuca ulaşmak için pratik bir çevrimiçi modülüs hesaplama makinesi kullanmak her zaman en akıllıca yoldur.