Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

php ile mükemmel sayı bulmak

U

uzaymerkezicom

Misafir
angelo :) saol bak yardım etmeye başladın. Demek ki eksi rep işe yaramış.
 

Gookhan

0
Onaylı Üye
Üye
Katılım
15 Ağustos 2005
Mesajlar
1,040
Açılan Konu
24
Tepki puanı
6
Konum
Ardeşen
Eski bir konu olmasına rağmen işimi gördü, teşekkürler.
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Hortlattığın iyi olmuş bence, bu forumda paylaşmak yok yardım yok gibi garip garip şeyler yazan arkadaşlar, paylaşım ve yardım olunca neler olduğunu görmesi açısından tarihi örnek teşkil etmiş. :) Nitekim soruyu soran arkadaş foruma en son 4 sene önce girmiş. Biz hala burdayız.
 

Gookhan

0
Onaylı Üye
Üye
Katılım
15 Ağustos 2005
Mesajlar
1,040
Açılan Konu
24
Tepki puanı
6
Konum
Ardeşen
Ben şimdi senin programı MATLAB için düzenliyorum.
Çözmesi bayağı kasıyor, wikipedia'daki tanımda yer alan havuz sayılarını kullanarak çözdüren bir program yazmaya çalışacağım.
 

Gookhan

0
Onaylı Üye
Üye
Katılım
15 Ağustos 2005
Mesajlar
1,040
Açılan Konu
24
Tepki puanı
6
Konum
Ardeşen
Efenim bu program da benden olsun. MATLAB içindir. İlk döngüdeki bitiş değerini arttırarak daha geniş aralıktaki mükemmel sayıları bulabilirsiniz. Yalnız sayıyı fazla arttırmayın. Çünkü bilgisayarınız saatlerce sürecek bir işleme başlamış olabilir.

Kod:
clc
clear all
% Kendisi hariç pozitif tam bölenlerinin toplamı kendisine eşit olan
% sayılara MÜKEMMEL SAYI denir.Bu tanımdan yola çıkarak, mükemmel bir sayı 
% aynı zamanda bütün pozitif tam bölenlerinin toplamının yarısına eşittir.

% iyinet forumlarından Angelo'ya teşekkürler.
% MATLAB uyarlaması MrPcKoPaT - www.gokhanhizal.com

fprintf('İşte mükemmel sayılarımız: \n')
for i=1:10000;

m=(i-1);
z=0;

    for k=1:m;
         b=rem(i,k);
         
         if b==0
             z=(z+k);
         end
     end
    
    if z==i
        fprintf('%g \n', i)
    end
end
 

webadresim

0
Onaylı Üye
Üye
Katılım
13 Mayıs 2011
Mesajlar
430
Açılan Konu
104
Tepki puanı
1
Bugün bir blogda bu probleme denk geldim ve uğraşmanın zevkli olacağını düşündüm. Gerçekten de zevkli bir uğraşı oldu. Logatritma kullanınca işler kolaylaştı, velhasıl formül çıkarıp çok daha kısasını yazmak mümkün oldu.


PHP:
function mukemmelmi($sayi)
{
	$s=log($sayi)/log(2);
	$n=round($s/2);
	return ((pow(2, $n)*(pow(2, $n+1)-1))==$sayi);
}


Edit: Düzgün çalışması için formüle bir şart konması gerekiyor. Şu an vaktim yok ama kimse yapmazsa yarın yaparım.
 
Üst