510 likes | 823 Views
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.
E N D
İç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 vec tamsayı olmak üzere a = b ·c . İfadesi için b vec değerleri a’nınbö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, vec 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 booleanisPrime(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 = pqxyazabiliriz. 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 qbölüm dbölen abö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üğü) • obeb(98,420). • 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):
Örnek gcd(33,77):
Örnek gcd(33,77):
Örnek gcd(33,77):
Örnek gcd(244,117):
Örnek gcd(244,117):
Örnek gcd(244,117):
Örnek gcd(244,117):
Örnek gcd(244,117):
Örnek gcd(244,117):
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, xmody) = gcd(y, x +qy) = gcd(y, x ) = gcd(x,y)
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) ) = ? O(1) Euclidean Algoritmasının Çalışma Zamanı Nedir? mod işleminin çalışma zamanınınO (1) olduğunu varsayalım: Burada “?” while döngüsünün iterasyon sayısıdır.
Modüler Aritmetik İki tip “mod” işlemi vardır (KARIŞTIRMAYIN): • modfonksiyonu • Girişler: Bir a sayı değeri ve b taban değeri • Çıkışlar: a modb 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’(modb) 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 ancakb | (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.
Ş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
Ş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