6 sayı teorisinin temelleri

Preview:

Citation preview

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 falsefor(i = 2 to n -1) if( i |n ) // “divides”! not disjunction return falsereturn 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. n

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.

n

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.

n

n

nxxnnn

Ö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 + 24a = dq + r

311731

24

93

q bölüm

r kalan

d bölen

a bölünen

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 bulunur98 = 2·49 = 2·7·7420 = 2·210 = 2·2·105 = 2·2·3·35

= 2·2·3·5·7Ortak Çarpanların altı çizilir: 2·7·7, 2·2·3·5·7Sonuç 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 = nwhile(y > 0)

r = x mod yx = yy = r

return x

EuclideanAlgorithm

Örnekgcd(33,77):

Step r = x mod y x y

0 - 33 77

Örnekgcd(33,77):

Step r = x mod y x y

0 - 33 77

133 mod 77

= 3377 33

Örnekgcd(33,77):

Step r = x mod y x y

0 - 33 77

133 mod 77

= 3377 33

277 mod 33

= 1133 11

Örnekgcd(33,77):

Step r = x mod y x y

0 - 33 77

133 mod 77

= 3377 33

277 mod 33

= 1133 11

333 mod 11

= 011 0

Örnekgcd(244,117):

Step r = x mod y x y

0 - 244 117

Örnekgcd(244,117):

Step r = x mod y x y

0 - 244 117

1 244 mod 117 = 10 117 10

Örnekgcd(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

Örnekgcd(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 73 10 mod 7 = 3 7 3

Örnekgcd(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 73 10 mod 7 = 3 7 34 7 mod 3 = 1 3 1

Örnekgcd(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 73 10 mod 7 = 3 7 34 7 mod 3 = 1 3 1

5 3 mod 1=0 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?

integer euclid(m, n)x = m, y = nwhile( y > 0)

r = x mod yx = yy = r

return x

O (1) +? ( 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 işleminin çalışma zamanının O (1) olduğunu varsayalım:

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

1. 113 mod 24:

2. -29 mod 7

411324

17

96

5297

356

(mod) congruenceTanı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 1023071001 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

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

Şifreleme Örneği

Şifreleme fonksiyonu aşağıdaki gibi olsunf (a) = (3a + 9) mod 26

Şifre “Merhaba”1. MERHABA (Büyük harfe çevir)2. 13,5,18,8,1,2,13. 22,24,11,7,12,15,124. VXKGLOL

Şifre Çözme İşlemi

Şifre çözme işleminde şifreleme işleminde kullanılan fonksiyonun tersi uygulanacaktır

Aşağıdaki fonksiyonun tersini bulacağızf (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