2. İç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
3. 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.
4. 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.
6. Ö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)
7. Bir n sayısının çarpanlarının sayısı
• 100’den küçük 15’in çarpanı olan kaç tane sayı
vardır?
8. 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?
9. 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
10. 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
11. 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.
12. 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?
13. 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?
14. 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 n den küçük asal sayıları
denememiz yeterli olacaktır.
15. Asallığın Test Edilmesi
• Eğer bir n sayısı kompozit bir sayı ise bu
sayının en küçük asal çarpanı n
Soru:
Yukarıda verilen ifadeyi nasıl ispat edebiliriz.
16. Asallığın Test Edilmesi
• Eğer bir n sayısı kompozit bir sayı ise bu sayının
en küçük asal çarpanı n
• Çelişki ile ispat yöntemini kullanabiliriz
• Bunun için n 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.
n n n x nx
17. Örnek
• 139 ve 143 değerlerinin asal olup olmadığını
test ediniz.
18. Ö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.
19. Bölme İşlemi
q bölüm
d bölen 3
31 117
93
a bölünen r kalan
24
117 = 31·3 + 24
a = dq + r
20. 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)
21. 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
22. 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 }
23. 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}.
24. 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)
25. Euclidean Algoritması
m,n Euclidean gcd(m,n)
Algorithm
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
31. Örnek
gcd(244,117):
Step r = x mod y x y
0 - 244 117
1 244 mod 117 = 10 117 10
32. Örnek
gcd(244,117):
Step r = x mod y x y
0 - 244 117
1 244 mod 117 = 10 117 10
2 117 mod 10 = 7 10 7
33. Örnek
gcd(244,117):
Step r = x mod y x y
0 - 244 117
1 244 mod 117 = 10 117 10
2 117 mod 10 = 7 10 7
3 10 mod 7 = 3 7 3
34. Örnek
gcd(244,117):
Step r = x mod y x y
0 - 244 117
1 244 mod 117 = 10 117 10
2 117 mod 10 = 7 10 7
3 10 mod 7 = 3 7 3
4 7 mod 3 = 1 3 1
35. Örnek
gcd(244,117):
Step r = x mod y x y
0 - 244 117
1 244 mod 117 = 10 117 10
2 117 mod 10 = 7 10 7
3 10 mod 7 = 3 7 3
4 7 mod 3 = 1 3 1
5 3 mod 1=0 1 0
36. 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)
37. 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 O (1) +
? ( O (1)
while( y > 0)
+ O (1)
r = x mod y + O (1)
x=y + O (1)
y=r + O (1) )
return x = ? O(1)
Burada “?” while döngüsünün iterasyon sayısıdır.
38. 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 a b 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.
39. mod fonksiyonu
4
1. 113 mod 24:
24 113
96
17
2. -29 mod 7
5
7 29
35
6
40. (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)
41. 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)
42. Ö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.
43. Harf Sayı
Dönüşüm Tablosu
A B 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
44. Şifreleme Örneği
Şifreleme fonksiyonu aşağıdaki gibi olsun
f (a) = (3a + 9) mod 26
Şifre “Merhaba”
1. MERHABA (Büyük harfe çevir)
2. 13,5,18,8,1,2,1
3. 22,24,11,7,12,15,12
4. VXKGLOL
45. Ş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
46. 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
47. 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