BİLGİSAYAR PROGRAMLAMA DERSİ ÖDEV RAPORU ASAL SAYI BULMA PROBLEMİ Ödevi Hazırlayan: ADI SOYADI : NO : BÖLÜMÜ : I. Öğretim II. Öğretim ASAL SAYI BULMA PROBLEMİ 1. Genel Bilgiler Asal sayılar, sadece iki pozitif tamsayı böleni olan doğal sayılardır. Asal sayılar, sadece kendisi ve 1 sayısına bölünebilen 1'den büyük pozitif tam sayılar biçiminde de tanımlanabilir. Öklid'den beri asal sayıların sonsuz olduğu kabul edilir. Asal sayılar hakkındaki pek çok soru günümüzde hâlâ cevaplanamamaktadır. Asırlardır asal sayılar üzerinde bir çok teorem ortaya atılmış, asal sayıların bulunması için çeşitli formüller üretilmeye çalışılmıştır. Fakat bunların hepsinin yanlış olduğu kanıtlanmıştır. Günümüzde asal sayıları veren bir matematik formülü bulunmamaktadır. Sayılar Teorisi'nin en önemli uğraşısı asal sayılar hakkındaki bu tür sorulardır. Asal sayılar ayrıca kriptografi alanının da yapı taşlarıdır. 1.1. 1 Sayısı Asal mi 1 sayısı günümüzde ne asal ne de bileşik kabul edilir ve özel bir durumu vardır.[1] Geçmişte pek çok matematikçi 1'i asal sayı olarak kabul ediyorlardı. 1'in asal olarak kabul edilmesine dayanarak yapılan birçok çalışma geçerliliğini hâlâ sürdürmektedir: Stern ve Zeisel'in çalışmaları vs.. Henri Lebesgue, çalışmalarında 1'i asal olarak ele alan son profesyonel matematikçi olarak bilinir. 1 asal olarak ele alındığında bazı teoremlerde değişikliğe gidilmesi gerekir. Örneğin tüm pozitif tam sayıların "yalnız bir şekilde" asal sayıların çarpımları şeklinde yazılabileceğini söyleyen Aritmetiğin temel teoremi, geçmişteki asal sayı tanımına göre geçerli değildir.[2][3][4] 1.2. Mersenne Sayıları Asal bir a sayısı için; 2𝑎 − 1 biçiminde yazılan sayılara Mersenne sayıları denir. Örneğin: 2 => 22 – 1 = 3 5 => 25 – 1 = 31 Denklem 1 2. Program Kodu AsalSayiBul.cpp #include <stdio.h> #include <conio.h> main () { int a; printf (" Bir sayi giriniz : "); scanf (" %d", &a); for (int i = 2; i < a; i ++) { bool asalmi = true; for (int j = 2; j < i; j ++) { // Sayı 2'den başlanarak kendisine kadar olan tüm tamsayılara // sırayla bölünüyor. Tam bölen bir sayıya rastlandığında // sayının asal sayı olmadığı anlaşılıyor ve bir sonraki // sayıyı denemek için döngü kesiliyor. Bu arada, bu sayının // asal olmadığını belirtmek için d'nin değeri false yapılıyor. if (i % j == 0) { asalmi = false; break; } } // // // // Burada iki ihtimal vardır. d == false ya da d == true. b'nin asal olmadığı anlaşıldığında d'nin değeri false yapıldı Aksi takdirde d'nin değeri true kalır ve bu bize sayının asal olduğunu anlatır. if (asalmi == true) printf (" %d \n", i ); // Döngü bir sonraki sayının asal olup olmadığını anlamak için // tekrar dönecektir. Bu nedenle d'nin değeri döngünün başında // tekrar true yapılıyor. } getch(); } 3. Kaynakça [1] Wells, D. The Penguin Dictionary of Curious and Interesting Numbers. Middlesex, England: Penguin Books, 1986. s 31. <[1]> [2] Gowers, T (2002). Mathematics: A Very Short Introduction. Oxford University Press. ss. 118. ISBN 0-19-285361-9. "The seemingly arbitrary exclusion of 1 from the definition of a prime … does not express some deep fact about numbers: it just happens to be a useful convention, adopted so there is only one way of factorizing any given number into primes" [3] Web: http://primes.utm.edu/notes/faq/one.html, Erişim: 25.04.2013 [4] Web: http://www.geocities.com/primefan/Prime1ProCon.html, Erişim:25.04.2013