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 [email protected] 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
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 😉
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!!!
Sende baya hızlanmışsın siteye yazılar ekleme konusunda 🙂 kolay gelsin devamını bekleriz 😉
eee hakancım su uyur deveci uyumaz 🙂
Ö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.
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:)))
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?
sanırım vardı da harddiski karıştırmam lazım bulursam ekleyecem söz…
yanlış
ne yanlış..?????
İf komutunun tırnakları nerde 1 satırdan sonrasını görmüyor..
su an baktım görüyo ama nasıl oldu anlamadım if in altına süslü parantez yapmamız gerekemzmiydi 1 den fazla komut satırı için
iyi
bence de iyi
Vampir sayıları bulma kodu alabilir miyiz?
http://mewkid.net/buy-amoxicillin/ – Amoxicillin 500mg Amoxicillin 500mg lqz.zmdp.ittutorial.org.zef.zz http://mewkid.net/buy-amoxicillin/