| « VB.Net Üzerine | Silver Bullet » |
bir sayının 2 üzeri olup olmadığını bulmak
Yetki kontrolleri için hazırladığımız kütüphanede ihtiyacımız olduğundan ve birazda enteresan bir problem olduğu için buraya da yazmak istedim.
elinizdeki herhangi bir sayının 2 üssü bir sayı olup olmadığını kontrol edecek bir fonksiyon yazın. hızlı çalışması için optimize edin.
örneğin;
8 (2 ^ 3) için true verecek.
128 (2 ^ 7) için true verecek.
132 için false ferecek.
not : hızlı çalışması gerektiği için logaritma gibi fonksiyonlar en son seçenektir.
4 comments
Comment from: Sinan [Visitor]
long int max'a kadar olan tum 2^leri pre calculate et bir array'e at sonra binary search yap cok istersen. kac tane var ki?
27. 08. 09 @ 19:47
Comment from: Barış Atamer [Visitor]
while(sayi!=1){
if(sayi%2!=0) return false;
else sayi=sayi/2;
}
return true;
if(sayi%2!=0) return false;
else sayi=sayi/2;
}
return true;
17. 11. 09 @ 21:38
Comment from: Daner [Visitor]
post gönderile uzun zaman olmuş ama eklemek istedim.
Sayının binary olarak karşılığına bakarız, 2 üzeri olan sayıların içinde tek 1 vardır ve bu 1 en sonda değildir.
Sayının binary olarak karşılığına bakarız, 2 üzeri olan sayıların içinde tek 1 vardır ve bu 1 en sonda değildir.
23. 11. 09 @ 01:18