basit bi problemim var ama nasıl çözeceğimi bilemiyorum. her türlü öneriye fikre açığım, maksat aylardır durmuş olan beynim biraz çalışsın artık.

problem şu:
bir sayı var ve derdim o sayıdan büyük en küçük 2 kuvvet değerini bulmak.
mesela 7 için 8 i bulmak. 23 için 32 yi. tabi esas problem bu kadar küçük sayılarda değil, büyük sayılarda bulmak.

var mı önerisi olan?

 

kağıt üzerinde bir formül mü yaratmaya çalışıyorsun? yoksa bir program mı yazmak istiyosun, bunun sonucunu veren ?

onakomabunako

oyle bisi olmaz
mesela yedi icin en yakin iki sayi 7 ve 7 olur
epsulon falan hikayesi
acikcasi ne sordugunu da anlamadik

evrenos

@onakomabunako: program :) tercihen kestirmeden bişey. yani çarp&kontrol et, çarp& kontrol et dışında bişey var mı, cevabını bulmak istediğim soru bu aslında.

@evrenos: baştan açıklayayım o zaman. elinde bir sayı var ve o sayıya en yakın ama ondan büyük 2^n değerini arıyorsun. ne yaparsın? yani mesela 7 için 8 i arıyorsun, kesinlikle 4 veya 16 yı değil.

cilgin korsan ces

2^n i arıyoruz, n = ceil(log2(x))
ceil o sayıya eşit ya da daha büyük en yakın tam sayıyı veren fonksiyon.
edit: örneğin: 23 için:
www.wolframalpha.com

talemon

matlab için;
%girilen bir sayı için en yakın 2'nin kuvvetini verir.
n = 0;
x = input('2''den büyük pozitif bir sayı girin:');
c = x;
while x>=2;
x = floor(x/2);
n = n+1;
end
if abs(2^n - c) > abs(2^(n+1) - c)
n = n+1;
end
sonuc = 2^n

edit: Benimki en yakın sayıyı veriyor. talemon'un yaptığı doğru.

onexey
1

mobil görünümden çık