İçeriğe geç
Favoriler

Modüler Üs Alma Hesaplama Aracı

Güncellendi:

b^e mod m değerini, üs yüzlerce basamaklı olsa bile, hızlı kare al–çarp yöntemiyle anında hesaplar. Bir taban, negatif olmayan bir üs ve pozitif bir mod girin; isterseniz tüm kare alma adımlarını da görün.

Kuvvetin m modülüne göre sonucunu hesaplayın

Giriş alanları
b
Pozitif veya negatif herhangi bir tam sayı
e
Negatif olmayan tam sayı; bᵉ'nin doğrudan hesaplanamayacak kadar büyük olmasına gerek yoktur
m
Pozitif tam sayı
Etkinleştirilirse, herhangi bir değeri değiştirdiğinizde sonuç otomatik olarak güncellenir.

Modüler Üs Alma Formülü

Formül
\[ c \;=\; b^e \bmod m \] \[ e = \sum_{k=0}^{n} e_k\,2^k \;\;\Longrightarrow\;\; b^e \;\equiv\; \prod_{k:\; e_k = 1} \bigl(b^{2^k} \bmod m\bigr) \pmod{m}, \qquad b^{2^k} \equiv \bigl(b^{2^{k-1}}\bigr)^2 \pmod{m} \]

Burada:

  • \(b\) — taban (herhangi bir tam sayı)
  • \(e\) — üs (negatif olmayan bir tam sayı)
  • \(m\) — mod (pozitif bir tam sayı)
  • \(e_k\) — \(e\) sayısının ikili gösterimindeki bitler
  • \(c\) — sonuç: \(b^e\) sayısının \(m\) sayısına bölünmesinden kalan

İlk satır modüler üs alma işlemini tanımlar. İkinci satır ise hesaplama aracının kullandığı kare al–çarp (ikili üs alma) özdeşliğidir: üs ikinin kuvvetlerine ayrıştırılır, \(b^{2^k}\) kuvvetleri art arda kare alınarak bulunur ve yalnızca 1 olan bitlere karşılık gelenler çarpılır — her şey mod \(m\) üzerinden yapıldığı için ara değerler hiçbir zaman kontrolden çıkmaz.

Modüler Üs Alma – Örnek Hesaplama

Örnek: hesaplama aracının varsayılan değerleri olan \(3^{644} \bmod 645\) işlemini hesaplayalım. \(3^{644}\) sayısı 308 basamaklı olduğundan, önce kuvveti hesaplayıp sonra kalanı almaya çalışmak nafile bir çabadır.

1. Adım — tabanı indirgeyin: \(3 \bmod 645 = 3\).

2. Adım — üssü ikilik sistemde yazın:

\[ 644 = 512 + 128 + 4 = 1010000100_2 \]

Mod 645 üzerinde art arda kare alma, 1 olan bitler için \(3^4 \equiv 81\), \(3^{128} \equiv 396\) ve \(3^{512} \equiv 111 \pmod{645}\) değerlerini verir.

3. Adım — bu değerleri her adımda mod 645'e indirgeyerek çarpın:

\[ 3^{644} \equiv 81 \times 396 \times 111 \equiv 471 \times 111 \equiv 52281 \equiv 36 \pmod{645} \]

Sonuç: \(3^{644} \bmod 645 = 36\). Algoritma yalnızca 9 kare alma ve 3 çarpma, yani basit bir yöntemin gerektireceği 643 işlem yerine toplam 12 modüler işlemle yetindi.

Hesaplama aracı nasıl kullanılır?

  1. Taban (b) değerini girin — pozitif veya negatif herhangi bir tam sayı olabilir.
  2. Üs (e) değerini girin — negatif olmayan bir tam sayı. \(b^e\)'nin doğrudan hesaplanamayacağı kadar büyük bile olabilir; bu araç tam olarak bunun içindir.
  3. Mod (m) değerini girin — herhangi bir pozitif tam sayı.
  4. Üssün ikili açılımını ve her kare alma adımını gösteren tabloyu görmek istiyorsanız Kare alma adımlarını göster kutucuğunu işaretli bırakın; yalnızca düz bir sonuç istiyorsanız işareti kaldırın.
  5. Sonuç (bᵉ mod m) değerini, İndirgenmiş tabanı (b mod m) ve adım adım çözümü okuyun.

Modüler üs alma nedir?

Modüler üs alma şu soruya cevap verir: \(b^e\) sayısı \(m\) sayısına bölündüğünde kalan nedir? Sonuç her zaman \(0\) ile \(m-1\) arasındadır. Başka bir deyişle bu, \(0 \le c < m\) olan ve \(b^e \equiv c \pmod{m}\) eşliğini sağlayan \(c\) sayısıdır. Örneğin \(3^{644} \bmod 645 = 36\) olması, \(3^{644}\) sayısının 645'e bölünmesinden 36 kaldığı anlamına gelir.

Basit yol — önce \(b^e\)'yi hesaplayıp sonra kalanı almak — çok çabuk tıkanır. \(3^{644}\) bile 308 basamaklıdır; kriptografik uygulamalarda ise yüzlerce basamaklı üsler olağandır ve böyle durumlarda \(b^e\), evrendeki atom sayısından daha fazla basamağa sahip olur. Çözüm kare al–çarp yöntemidir: üssü ikilik sistemde yazın, \(b^{2^k} \bmod m\) değerlerini art arda kare alıp indirgeyerek elde edin, ardından yalnızca 1 olan bitlere karşılık gelen değerleri çarpın. Bu yöntem \(e-1\) yerine yalnızca \(O(\log e)\) modüler çarpmaya ihtiyaç duyar ve her ara sonuç mod \(m\) ile indirgendiğinden hiçbir sayı yaklaşık \(m^2\) değerini aşmaz.

Modüler üs alma, açık anahtarlı kriptografinin bel kemiğidir. RSA ile şifreleme ve şifre çözme, devasa bir modlu gerçekleştirilen tek bir modüler üs alma işlemidir; Diffie–Hellman anahtar değişimi ve ElGamal şeması da ona dayanır. Ayrıca Fermat ve Miller–Rabin gibi asallık testlerinin de temelini oluşturur; bu testler \(a^{n-1} \equiv 1 \pmod n\) olup olmadığını denetler — temeldeki sayı teorisini Fermat'nın Küçük Teoremi ve Euler Teoremi hesaplama araçlarımızla inceleyebilirsiniz.

Adım gösterimi algoritmayı şeffaf hâle getirir: tablo, üssün her bir \(k\) bit konumunu \(b^{2^k} \bmod m\) değeriyle birlikte listeler; kalın satırlar gerçekte kullanılanlardır ve bunların çarpımı (mod \(m\) ile indirgenmiş) cevabınızdır. Bilgisayar cebir sistemlerinin arka planda yaptığı tam olarak budur ve bunu bir kez görmek, devasa üslerin neden bu kadar ucuz olduğunu anlamanın en iyi yoludur.

Varsayımlar, sınırlar ve ipuçları

  • Üs negatif olmamalıdır. Negatif bir üs, \(b\)'nin modüler tersini gerektirir; bu ters yalnızca \(\gcd(b, m) = 1\) iken var olur. Bu durumu aşmak için önce tersi Modüler Ters hesaplama aracımızla bulun, sonra çıktısını taban olarak alıp pozitif bir üsle kullanın.
  • Mod pozitif olmalıdır. \(m = 1\) ise her tam sayı 0'a eşliklidir, dolayısıyla sonuç 0 çıkar — bu bir hata değil, matematiksel olarak doğrudur.
  • Negatif taban sorun değildir. Taban önce en küçük negatif olmayan kalanına, yani \(b \bmod m\) değerine indirgenir; bu yüzden \(-12\) ile \(m - 12\) aynı sonucu verir.
  • Üs 0 olduğunda sonuç \(1 \bmod m\) olur (yalnızca \(m = 1\) iken 0'dır); bu, \(b^0 = 1\) ile tutarlıdır.
  • Boyut sınırları: taban ve mod en fazla 1000'er basamaklı, üs ise \(10^{18}\) kadar büyük olabilir. Algoritma üsse göre logaritmik çalıştığından, bu büyüklükteki üsler bile anında hesaplanır.
  • Sonucu başka bir yoldan doğrulayın: bileşik bir mod söz konusuysa hesaplamayı asal kuvvet parçalarına bölüp sonuçları yeniden birleştirebilirsiniz — sonuçları bağımsız olarak denetlemek için Çin Kalan Teoremi hesaplama aracımızı deneyin.

Sıkça Sorulan Sorular

b^e mod m değerini elle nasıl hesaplarım?

Kare al–çarp yöntemini kullanın. Önce tabanı indirgeyin: b yerine \(b \bmod m\) değerini alın. Ardından üssü ikilik sistemde yazın ve tabanı art arda kare alarak her adımdan sonra mod m ile indirgeyin: \(b^2, b^4, b^8, b^{16}, \ldots\). Son olarak yalnızca üssün 1 olan bitlerine karşılık gelen kare değerlerini, her çarpımda mod m ile indirgeyerek çarpın. Böylece tüm ara değerler \(m^2\) değerinin altında kalır.

b^e mod m sonucu neden her zaman 0 ile m-1 arasındadır?

Çünkü modüler aritmetik en küçük negatif olmayan kalanlarla çalışır. \(b^e \bmod m\) ifadesi, \(b^e\) sayısının \(m\) sayısına bölünmesinden kalan olarak tanımlanır ve bölme işlemindeki kalanlar her zaman \(0 \le c \le m-1\) koşulunu sağlar. Taban negatif olsa bile önce eşdeğer pozitif kalana dönüştürülür; dolayısıyla sonuç asla negatif olmaz.

Büyük bir kuvvetin son basamağı nedir (örneğin 7^100)?

Bu, aslında gizlenmiş bir modüler üs alma sorunudur: bir sayının son basamağı, o sayının mod 10'a göre kalanıdır. Dolayısıyla burada \(7^{100} \bmod 10\) işlemini hesaplayın. Benzer şekilde son iki basamak sayının mod 100, son üç basamak ise mod 1000 değeridir. Bu, son basamak sorulu olimpiyat ve ödev problemleri için klasik bir kısayoldur.

Üs 0 veya mod 1 olursa ne olur?

\(e = 0\) iken sonuç \(1 \bmod m\) olur; bu, \(m = 1\) dışındaki tüm modlarda 1'e eşittir; \(m = 1\) iken ise 0'a eşittir, çünkü her tam sayı mod 1'de 0'a eşliklidir. Bu özel durumlar doğru biçimde ele alınır ve \(m = 1\) her taban ve üs için her zaman 0 sonucunu verir; bu bir hata değil, matematiksel olarak doğrudur.

Negatif taban veya negatif üs kullanabilir miyim?

Negatif taban sorun değildir: hesaplama aracı onu önce eşdeğer bir pozitif kalana indirgediğinden \(-12\), \(m - 12\) gibi davranır. Negatif üsler desteklenmez, çünkü tabanın modüler tersini gerektirirler ve bu ters yalnızca \(\gcd(b, m) = 1\) iken var olur. Çözüm için önce \(b^{-1} \bmod m\) değerini bulun, sonra bunu \(|e|\) kuvvetine yükseltin.

Modüler üs alma RSA'da ve kriptografide nasıl kullanılır?

RSA ile şifreleme ve şifre çözme, her biri 2048 ve üzeri bitlik bir modlu gerçekleştirilen tek bir \(c = m^e \bmod n\) modüler üs alma işlemidir; kare al–çarp yöntemi tam da bunu verimli biçimde hesaplar. Diffie–Hellman anahtar değişimi ve ElGamal da aynı şekilde çalışır. Yöntemin \(O(\log e)\) hızı devasa üsleri kullanılabilir kılarken, işlemi gizli anahtar olmadan tersine çevirmenin zorluğu bu şemaları güvenli tutar.

b^e mod m hesaplanırken en sık yapılan hata nedir?

En yaygın hata, önce \(b^e\)'yi hesaplayıp sonra kalanı almaya çalışmaktır — kuvvet çok hızla astronomik boyutlara ulaşır ve hesap makinesinin kapasitesini ya aşar ya da yazılması imkânsız hâle gelir. Bunun yerine her kare alma ve çarpma işleminden sonra mod m ile indirgeyin. Bir diğer sık hata da \(b^0 \bmod 1 = 0\) olduğunu, 1 değil, unutmaktır; çünkü mod 1'de her şey 0'a eşliklidir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir