Sayı Teorisinin Temelleri
İçindekiler Bölünebilme işleminin özellikleri Asal sayılar Aritmetiğin temel teoremi Bölme algoritması OBEB/OKEK Aralarında asal sayılar Modüler aritmetik Şifreleme algoritması örnekleri
Sayı Teorisi Neden Önemli Bilgisayarlar keşfedilmeden önce sayı teorisi pure (saf) matematiğin ve kişisel estetiğin önemli bir parçası idi. İkinci dünya savaşına yön vermiştir. İnternet üzerinde elektronik ticaret güvenliğinin temelini oluşturmaktadır. Günümüzde sayı teorisi şifreleme algoritmaları için kritik bir öneme sahiptir. Birçok şifreleme algoritmasının temelini modüler aritmetik oluşturmaktadır. Bu bölümde sayı teorisinin bu temel elemanlarına ilişkin algoritmaları inceleyeceğiz.
Bölünebilme İşlemi a, b ve c tamsayı olmak üzere a = b ·c . İfadesi için b ve c değerleri a’nın böleni (veya çarpanı) olarak adlandırılır. “|” sembolü “böler” işlemini gösterir: b | a c | a . NOT: çoğu zaman bu gösterim karışıklığa sebep olmaktadır. “|” sembolü ile “/” sembolü karıştırılmaktadır.
Örnek Aşağıdaki ifadelerden kaçı doğrudur. 77 | 7 7 | 77 24 | 24 0 | 24 24 | 0
Örnek 77 | 7: yanlış çünkü büyük sayı kendinden küçük sayıyı bölemez. 7 | 77: doğru çünkü 77 = 7 · 11 24 | 24: doğru çünkü 24 = 24 · 1 0 | 24: yanlış, çünkü 0 değerini sadece 0 böler 24 | 0: doğru çünkü 0 her sayıyı böler (0 = 24 · 0)
Bir n sayısının çarpanlarının sayısı 100’den küçük 15’in çarpanı olan kaç tane sayı vardır?
Bir n sayısının çarpanlarının sayısı 100’den küçük 15’in çarpanı olan kaç tane sayı vardır? 15, 30, 45, 60, 75, 80, 95. Peki 1.000.000’dan küçük 15’in çarpanı olan kaç tane sayı vardır?
Bir n sayısının çarpanlarının sayısı Peki 1.000.000’dan küçük 15’in çarpanı olan kaç tane sayı vardır? Herhangi bir N sayısından küçük d’nin çarpanlarının sayısı aşağıdaki ifade ile bulunur. |{m Z+ | d |m and m N }| = N/d
Bölünebilme Teoreminin Özellikleri a, b, ve c tamsayı ise: a|b a|c a|(b + c ) a|b a|bc a|b b|c a|c Örnek 17|34 17|170 17|204 17|34 17|340 6|12 12|144 6 | 144
Asal Sayılar n 2 için bir sayı asal ise sadece 1 ve kendisine bölünebilir. Bir sayı asal değil ise kompozit sayı olarak adlandırılır. Aritmetiğin Temel Teoremi Herhangi bir sayı iki veya daha fazla asal sayının çarpımı şeklinde yazılabilir.
Asallığın Test Edilmesi boolean isPrime(integer n) if ( n < 2 ) return false for(i = 2 to n -1) if( i |n ) // “divides”! not disjunction return false return true Soru: bu algoritmanın çalışma zamanı nedir?
Asallığın Test Edilmesi Algoritmanın çalışma zamanını O(n) olarak belirleyebiliriz. Çünkü baskın terim n’dir. Bu ifade bize algoritmanın çalışma zamanının n değerine bağlı olduğunu göstermektedir. n=1.000.000 için giriş boyutunun 7 dijit olduğunu biliyoruz. Daha genel bir ifade ile giriş boyutu k dijit için çalışma zamanı O (10k ) olacak. Bu değer çok büyük bir değerdir. Soru: Bu algoritmayı nasıl iyileştirebiliriz?
Asallığın Test Edilmesi n/2 den büyük sayıları denemeyiz Çift sayıları denemeyiz. Biliyoruz ki bir sayı çift ise asal değildir. Bu durumda sayıların yarısını denemeyiz. Genellikle sadece küçük asal sayıları deneriz. Aslında sadece den küçük asal sayıları denememiz yeterli olacaktır.
Asallığın Test Edilmesi Eğer bir n sayısı kompozit bir sayı ise bu sayının en küçük asal çarpanı Soru: Yukarıda verilen ifadeyi nasıl ispat edebiliriz.
Asallığın Test Edilmesi Eğer bir n sayısı kompozit bir sayı ise bu sayının en küçük asal çarpanı Çelişki ile ispat yöntemini kullanabiliriz Bunun için den büyük bir asal çarpanının olduğunu varsayalım. Aritmetiğin temel teoremini kullanarak n = pqx yazabiliriz. Burada p ve q değerleri asal x ise tamsayı olsun. Bu durumda aşağıdaki ifadeyi elde ederiz. İfade bir çelişki olduğundan yukarıdaki teorem doğrudur.
Örnek 139 ve 143 değerlerinin asal olup olmadığını test ediniz.
Örnek 139 ve 143 değerlerinin asal olup olmadığını test ediniz. Aşağıdaki asal sayı listesini deneyelim 2: sayıların hiçbiri çift değil bölünemez. 3: Basamakların toplamı: 1+3+9 = 13, 1+4+3 = 8 ikiside 3 ile bölünemez. 5: İki sayınında sonu 0 veya 5’e bölünemiyor. 7: 140 değeri 7’ye tam bölündüğünden iki sayıda 7’ye tam bölünemez 11: Basamakların toplamı 1-3+9 = 7 olduğundan 139 bölünemez fakat 1-4+3 = 0 olduğundan 143 bölünebilir. Sonlandırma koşulu! Sonraki denenecek asal sayı 13 fakat den daha büyük olduğu için artık denenmez. Sonuç: 139 asal, 143 kompozit sayıdır.
Bölme İşlemi 117 = 31·3 + 24 a = dq + r q bölüm d bölen a bölünen r kalan
OBEB (Ortak Bölenlerin En Büyüğü) OBEB(a,b)=d ise hem a hem de b sayılarını bölebilen en büyük sayının d olduğu anlamına gelir. OBEB(a,b)=1 ise a ve b sayıları aralarında asal sayılardır. Bu sayıların aralarında asal olmaları gerekmez. obeb=gcd (Greatest Common Divisor) gcd(11,77) gcd(33,77) gcd(24,36) gcd(24,25)
OBEB (Ortak Bölenlerin En Büyüğü) Her bir sayı için asal çarpanlar bulunur 98 = 2·49 = 2·7·7 420 = 2·210 = 2·2·105 = 2·2·3·35 = 2·2·3·5·7 Ortak Çarpanların altı çizilir: 2·7·7, 2·2·3·5·7 Sonuç olarak, obeb(98,420) = 14
Aralarında Asal Sayılar Aşağıdaki küme için aralarında asal olan maksimum uzunluklu alt kümeyi bulunuz. { 44, 28, 21, 15, 169, 17 }
Aralarında Asal Sayılar Aşağıdaki liste için aralarında asal olan maksimum uzunluklu alt kümeyi bulunuz. { 44, 28, 21, 15, 169, 17 } Olası cevaplar {17, 169, 28, 15}. {17, 169, 44, 15}.
OKEK (Ortak Katların En Küçüğü) okek(a,b)=m ise hem a hem de b sayılarının bölebildiği katlarının en küçüğü m sayısıdır. okek=lcm (Least Common Multiple) lcm(10,100) = 100 lcm(7,5) = 35 lcm(9,21) = 63 Teorem: lcm(a,b) = ab / gcd(a,b)
Euclidean Algoritması m , n gcd(m,n) integer euclid(pos. integer m, pos. integer n) x = m, y = n while(y > 0) r = x mod y x = y y = r return x Euclidean Algorithm
Örnek gcd(33,77): Step r = x mod y x y - 33 77
Örnek gcd(33,77): Step r = x mod y x y - 33 77 1 33 mod 77 = 33
Örnek gcd(33,77): Step r = x mod y x y - 33 77 1 33 mod 77 = 33 2 - 33 77 1 33 mod 77 = 33 2 77 mod 33 = 11 11
Örnek gcd(33,77): Step r = x mod y x y - 33 77 1 33 mod 77 = 33 2 - 33 77 1 33 mod 77 = 33 2 77 mod 33 = 11 11 3 33 mod 11 = 0
Örnek gcd(244,117): Step r = x mod y x y - 244 117
Örnek gcd(244,117): Step r = x mod y x y - 244 117 1 244 mod 117 = 10 - 244 117 1 244 mod 117 = 10 10
Örnek gcd(244,117): Step r = x mod y x y - 244 117 1 244 mod 117 = 10 - 244 117 1 244 mod 117 = 10 10 2 117 mod 10 = 7 7
Örnek gcd(244,117): Step r = x mod y x y - 244 117 1 244 mod 117 = 10 - 244 117 1 244 mod 117 = 10 10 2 117 mod 10 = 7 7 3 10 mod 7 = 3
Örnek gcd(244,117): Step r = x mod y x y - 244 117 1 244 mod 117 = 10 - 244 117 1 244 mod 117 = 10 10 2 117 mod 10 = 7 7 3 10 mod 7 = 3 4 7 mod 3 = 1
Örnek gcd(244,117): Step r = x mod y x y - 244 117 1 244 mod 117 = 10 - 244 117 1 244 mod 117 = 10 10 2 117 mod 10 = 7 7 3 10 mod 7 = 3 4 7 mod 3 = 1 5 3 mod 1=0
Euclidean Algoritmasının Doğruluğu Euclidean algoritması incelenirse gcd(x,y ) ifadesinin değişmediği görülür. x’, y’ ifadeleri x, y değerlerinin bir sonraki değerlerini göstermek üzere: gcd(x’,y’) = gcd(y, x mod y) = gcd(y, x + qy) = gcd(y, x ) = gcd(x,y)
Euclidean Algoritmasının Çalışma Zamanı Nedir? mod işleminin çalışma zamanının O (1) olduğunu varsayalım: integer euclid(m, n) x = m, y = n while( y > 0) r = x mod y x = y y = r return x O (1) + ? ( O (1) + O (1) + O (1) + O (1) ) = ? O(1) Burada “?” while döngüsünün iterasyon sayısıdır.
Modüler Aritmetik İki tip “mod” işlemi vardır (KARIŞTIRMAYIN): mod fonksiyonu Girişler: Bir a sayı değeri ve b taban değeri Çıkışlar: a mod b sonucu olarak 0 ve b –1 aralığında sayılar Bu değer ab ifadesinin sonucundaki kalan değeridir C#, Java gibi programlama dillerindeki % operatörüdür. (mod) congruence a, a’ gibi iki sayı ve bunların göreceli olduğu bir b tabanıyla ilgilidir. a a’ (mod b) bu ifadenin anlamı a ve a’ değerleri b değerini böldüğü zaman aynı kalanı veirler.
mod fonksiyonu 113 mod 24: -29 mod 7
(mod) congruence Tanım: a,a’ değerleri tamsayı ve b pozitif tamsayı olsun a a’ (mod b) ancak ve ancak b | (a – a’ ). a mod b = a’ mod b Soru: Aşağıdakilerden hangileri doğrudur. 3 3 (mod 17) 3 -3 (mod 17) 172 177 (mod 5) -13 13 (mod 26)
Bazı Önemli Özellikler a mod b a (mod b) a a’ (mod b) ve c c’ (mod b) ise: a+c (a’+c’ )(mod b) ac a’c’ (mod b) a k a’ k (mod b)
Örnek 3071001 mod 102 3071001 mod 102 3071001 (mod 102) 11001 (mod 102) 1 (mod 102). Bu yüzden, 3071001 mod 102 = 1. (-45·77) mod 17 (-45·77) (mod 17) (6·9) (mod 17) 54 (mod 17) 3 (mod 17). Bu yüzden (-45·77) mod 17 = 3.
Harf Sayı Dönüşüm Tablosu C D E F G H I J K L M 1 2 3 4 5 6 7 8 9 10 11 12 13 N O P Q R S T U V W X Y Z 14 15 16 17 18 19 20 21 22 23 24 25 26
Şifreleme Örneği Şifreleme fonksiyonu aşağıdaki gibi olsun f (a) = (3a + 9) mod 26 Şifre “Merhaba” MERHABA (Büyük harfe çevir) 13,5,18,8,1,2,1 22,24,11,7,12,15,12 VXKGLOL
g (a) = 9 (a - 9) mod 26 = (9a – 3) mod 26 Şifre Çözme İşlemi Şifre çözme işleminde şifreleme işleminde kullanılan fonksiyonun tersi uygulanacaktır Aşağıdaki fonksiyonun tersini bulacağız f (a) = (3a + 9) mod 26 g (a) = 3-1 (a - 9) gcd(3,26) = 1, olması için 3’ün tersi mod 26’da 9 olarak tanımlanır. Bu durumda şifre çözme fonksiyonu: g (a) = 9 (a - 9) mod 26 = (9a – 3) mod 26
Sezar Şifresi Sezar şifreleme algoritmasının fonksiyonu aşağıda verilmiştir. f (a) = (a+3) mod 26 Buna göre soyadınızı şifreleyiniz Şifre çözme fonksiyonunu tanımlayınız
Google’den inciler 2004 yılında reklam panolarında aşağıdaki link yayınlandı. Doğru adresi girenler Google’in iş başvurusu sayfasına yönlendirildi