Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama C++ Builder Asal Sayı Algoritmalarının Karşılaştırılması


Asal Sayı Algoritmalarının Karşılaştırılması

AÇIKLAMA

C++ Builder 6 ile uyumludur.

Bu programda asal sayı algoritmaları zaman bakımından karşılaştırılmıştır. 1.Algoritma bilinen Asal sayı tanımıdır yani asallığı test edilmek istenen sayı 2 den başlanarak kendisine kadar olan hiçbir tam sayıya kalansız olarak bölünmüyorsa bu sayı asal sayıdır. 2. Algoritmada biraz daha iyileştirme bulunmaktadır, bu sefer 2 den başlanarak sayının yarısına kadar test işlemi yapılır. Eğer sayının yarısına kadar kalansız olarak bölünmemişse sonrasında da bölünmez. 3. Algoritma ise en iyisidir ve karekök algoritması olarak bilinir. Bu sefer test işlemi 2 den başlanarak sayının kareköküne kadar gerçekleştirilir. Programda 3 algoritmanında girilen sayı değerine olan asal sayıları ne kadar zamanda bulduğu saat,dakika,saniye cinsinden verilmiştir. Algoritmaların arasındaki farkı anlayabilmek için büyük bir sınır değeri (100000,200000 gibi) giriniz.


Programın Tamamını Aşağıdaki Linkten İndirebilirsiniz

Linki Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

Program Kodu:

  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. #include "Math.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TForm1 *Form1;
  12. //---------------------------------------------------------------------------
  13. __fastcall TForm1::TForm1(TComponent* Owner)
  14.         : TForm(Owner)
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18.  
  19. void __fastcall TForm1::Button1Click(TObject *Sender)
  20. {
  21. TDateTime ilk,son;
  22. ilk=Now();
  23. ListBox1->Clear();
  24. int a=StrToInt(Edit1->Text);
  25. ListBox1->Items->Add("2");
  26. for(int i=3;i<=a;i++)
  27. {
  28.   int kontrol=0;
  29.   for(int j=2;j<i;j++)
  30.   {
  31.    if(i%j==0)
  32.     {
  33.      kontrol=1;
  34.      break;
  35.     } //if
  36.   }  //icteki for
  37.   if(kontrol==0)
  38.   ListBox1->Items->Add(i);
  39. } //en dıstaki for
  40. son=Now();
  41. Label1->Caption=son-ilk;
  42. }
  43. //---------------------------------------------------------------------------
  44.  
  45. void __fastcall TForm1::Button2Click(TObject *Sender)
  46. {
  47. TDateTime ilk,son;
  48. ilk=Now();
  49. ListBox1->Clear();
  50. int a=StrToInt(Edit1->Text);
  51. ListBox1->Items->Add("2");
  52. for(int i=3;i<=a;i++)
  53. {
  54.   int kontrol=0;
  55.   for(int j=2;j<i/2;j++)
  56.   {
  57.    if(i%j==0)
  58.     {
  59.      kontrol=1;
  60.      break;
  61.     } //if
  62.   }  //icteki for
  63.   if(kontrol==0)
  64.   ListBox1->Items->Add(i);
  65. } //en dıstaki for
  66. son=Now();
  67. Label2->Caption=son-ilk;
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TForm1::Button3Click(TObject *Sender)
  71. {
  72. TDateTime ilk,son;
  73. ilk=Now();
  74. ListBox1->Clear();
  75. int a=StrToInt(Edit1->Text);
  76. ListBox1->Items->Add("2");
  77. for(int i=3;i<=a;i++)
  78. {
  79.   int kontrol=0;
  80.   for(int j=2;j<(sqrt(i)+1);j++)
  81.   {
  82.    if(i%j==0)
  83.     {
  84.      kontrol=1;
  85.      break;
  86.     } //if
  87.   }  //icteki for
  88.   if(kontrol==0)
  89.   ListBox1->Items->Add(i);
  90. } //en dıstaki for
  91. son=Now();
  92. Label3->Caption=son-ilk;
  93. }
  94. //---------------------------------------------------------------------------
Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Pazartesi, 03 Eylül 2012 15:58 )