Bu yazımda Algoritmik problemlerde kullanılan ve bilim dünyasında da gayet ilginç olarak görülen mükemmel sayilardan bahsedecek ve verilen bir araliktaki tüm mükemmel sayilari bulan algoritmayı C++ koduyla beraber sunacam sizlere ama öncellikle Mükemmel sayi nedir ona bakalım.Mükemmel Sayi kendisine bölünen tüm bölünenlerinin toplamı kendisine eşit olan sayilara Mükemmel Sayilar denir.

Örneğin: 6 nın bölünenleri 1-2-3  tür.Bu bölünenleri topladığımızda kendisine eşit çıktığından bu sayi Mükemmel Sayidir.

Örneğin:28,28 in bölünenleri 1-2-4-7-14 olup 1+2+4+7+14=28 olduğundan bu sayida mükemmel sayidir.

Şimdi 100000 e kadar olan mükemmel sayilari gösteren exe’yi gösterdikten sonra C++ kodunu inceleyelim.

#include<iostream>
using namespace std;main()
{
int sayi1,toplam=0;
cout<<“\t\tMEHMET SALIH DEVECI-18.07.2010\n”;
cout<<“HANGI ARALIGA KADAR KI MUKEMMEL SAYILARI GORMEK ISTERSINIZ:”;
cin>>sayi1;
cout<<sayi1<<” e kadar ki mukemmel sayilar–> “;
for(int j=4;j<sayi1;j++)
{
for(int i=1;i<=j-1;i++)
{
if(j%i==0)
toplam+=i;
}
if(toplam==j)
cout<<j<<”  “;
toplam=0;
}
cout<<“\n\nBILGISAYAR MUHENDISI YAZILIM UZMANI\n\n”;
system(“pause”);

}

 

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi
İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

yorum
  1. Hasan MANZAK dedi ki:

    for(int i=1;i 2, 3, 6, 9, 18, 27, 54, 81. Tutup da 82 ve sonrasını hesaba katmaya gerek yok. Benzer bir durum tek sayılar için de geçerli. Örnek: 165 = 3*5*11 => 3, 5, 11, 15, 33, 55. Gene aynı şekilde 56 ve sonrasını hesaba katmaya gerek yok. 165/2=82. Üst limiti bu şekilde ayarladığında gereksiz hesaplamaları elemiş olursun.

    Hatta, bak bunları yazarken aklıma daha iyi bir iyileştirme yöntemi geldi. Matematiksel olarak bir sayının en büyük böleni ( kendisi hariç ), sayının en küçük asal bölenine bölümü değil midir? 162/2=81, 165/3=55 … Dolayısıyla en küçük böleni yakaladıktan sonra, döngünün üst limitini hemen “Sayı / en küçük bölen” şeklinde ayarlayıp, gereksiz hesaplamaları elemiş olursun. Tabi bunun için for değil de while kullanman gerekir 😉

    Ayrıca bölenelr döngünü 1 den değil de 2 den başlatırsan gene bir eleminasyon yapmış olursun. 1’e bölmeye gerek yok çünkü 😉 Döngü sonunda toplama 1 eklersin, biter 😉

  2. YAZILIM UZMANI dedi ki:

    haklısınız zaten bir arkadaş istemişti bunu bende hemen o anda yazdım biraz hızlı oldu dediğiniz gibi iyi bir iyileştirme yapamadan yazmış oldum!! Vakit bulursam düzeltecem inşallah!!!

  3. cypkng dedi ki:

    Öncelikle paylaşımınız için teşekkür ederim. Fakat anlayamadığım bir yer var… #include kütüphanesine ihtiyaç duyan kısım hangisi ve ayrıca int mukemmel(int);
    kısmına niye ihtiyaç duyduk, Açıklayabilirseniz kodu anlamama faydası olacak. Birde
    for(int j=4;j<sayi1;j++) burda j neden 4 ten başladı niye bir değil. Aslında epey anlamadığım yer varmış. Zahmet olmaz ise açıklayabilirmisiniz.

  4. YAZILIM UZMANI dedi ki:

    include derken hangi include en üsttekine evet ihtiyaç yok ancak proje açarken otomatikmen geldiğinden bende silmedim..evet o fonksiyon prototipini önceden altta olan mukemmel fonksiyonu iiçin yazmıştım ancak sonrada fonksiyonu sildim kodları maine koydum onuda orda unutmuşum 4 ten başlamanasının nedeniyse en küçük mükemmel sayı 6 olmasındndır sende istersen 5 ten başlat sorun olmaz:)))

  5. cypking dedi ki:

    Açıklamaların için teşekürler, bende en üstteki include için söylemiştim çok sağolasın. Ayrıca elinde “*” lardan falan kare çizdirme yada içi bos ucgen falan var mı? Sitene ekleyebilirmisin?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s