asal sayı bulma problemi

advertisement
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
Download