Sayıların Dili
Hesap Bilmeyen Kral!
Timur Karaçay
tkaracay@baskent.edu.tr
Satrancı icat edenin bir Çin’li rahip olduğu söylenir ve ona ait şu öykü anlatılır. Kral, satranç oyununun methini duyar ve rahibi çağırarak oyunu kendisine öğretmesini ister. Rahip isteneni yapar. Oyundan çok memnun kalan kral, rahibe,
“Bana güzel bir oyun öğrettin. Seni memnun etmek isterim. Dile benden ne dilersen!”
der. Rahip,
“Sağlığınızı diliyorum, Haşmetmeap!”
diyerek yanıt verir. Ama kral bir şey istemesi için çok ısrar edince, rahip krala hınzırca bir oyun oynamak ister ve der ki,
“Haşmetlim, bu satranç tahtasının 64 karesi vardır. 1 nci kareye 1 pirinç tanesi, 2 nci kareye birincinin iki katını, 3 ncü kareye 2 ncinin iki katını,…, genel kural olarak, (n+1)-inci kareye n- yinci karedekinin iki katı kadar pirinç koymalarını emrediniz.”
der. Kendisine güzel bir oyun öğreten adamı cömertçe ödüllendirme fırsatı vermediğini düşünerek, Kral, rahibin bu isteğine çok içerler. Veziri çağırarak,
“Ayağına gelen talihi tepen bu sefili karşımdan alın! Götürün ambara, satranç tahtasına istediği bir avuç pirinci koyup saraydan atın!..”
buyruğunu verir. Rahibi pirinç ambarına indirirler. Saatler geçtikten sonra, vezir telaşla içeri girer ve
“Haşmetlim, depodaki pirinç rahibe yetmedi!”
der. Kral bu sefer vezire kızar:
“Bre vezir olacak adam, bir avuç pirinç kalmayana kadar boşaldıysa ambarı neden önceden doldurmadın? Sarayı nasıl tehlikeye atarsın?”
Vezir kendisini savunur:
“Haşmetlim, ambar ağzına kadar zaten doluydu, ama rahibin istediği daha fazla çıktı.”
yanıtını verir. Vezirin yanlış hesap yaptığını düşünen kral, sarayın bütün saymanlarına doğru bir hesap çıkarmaları emrini verir. Günlerce hesap yapan saymanlar, sonunda başsaymanı kralın huzuruna gönderirler. Başsayman, çekinerek krala durumu söyler:
“Haşmetlim, emriniz üzerine günlerdir gece-gündüz durmadan hesap yaptık. Hesabı bitiremedik. Ama şu ana kadar çıkan sayılara göre veziriniz haklı çıktı. Ambardaki pirinç yetmeyeceği gibi, Çindeki bütün ambarları versek, hatta gelecek yıllarda yetişecek pirinçleri de versek, gene de rahibin istediğini karşılayamıyor!”
Nedenini açıkalamayı sona bırakıp rahibe verilecek pirinç sayısını hemen yazalım:
9 223 372 036 854 775 808.
Hesabı basitleştirmek için, bu sayıyı yüz milyonlar basamağına yuvarlarsak,
≈ 9 223 372 036 854 000 000 (*)
tane pirinç eder. Şimdi bu sayıda pirincin ağırlığını anlamak için, basit bir hesap yapalım. Yuvarlak hesap yapabilmek için 100 pirincin 1 gram geldiğini varsayalım. (Gerçekte daha az pirinç gerekir.) 1kg = 1000gr ve 1ton=1000kg olduğuna göre, 1 kg pirinç için 100.000 pirinç gerekir. 1 ton pirinç için 100.000.000 pirinç gerekir. (*) daki pirinç sayısını buna bölersek, rahibin kaç ton pirinç alacağını bulabiliriz:
9 223 372 036 854 000 000 : 100 000 000 = 9 223 036 854 Ton.
Hesabı kolaylaştırmak için aldığımız yuvarlak sayılar yerine gerçek değerleri koyduğumuzda, rahibin alacağı pirincin 9 milyar tondan çok daha fazla olduğunu göreceğiz. Bu kadar pirinç ne kralın deposunda ne de ülke sathındaki depolarda var olabilirdi. Böyle bir depo olsaydı, rahibin onları taşıyabilmesi için 20 tonluk kamyonlardan yaklaşık 1 milyar tane kamyona gerekseme duyacaktı. Henüz bu kadar kamyon üretilemedi...
Öykünün sonrası bizi ilgilendirmiyor. İster, kral, zeki rahibi çağırıp yeniden ödüllendirmiş olsun, isterse cezalandırmış olsun. Biz, işin hesabıyla ilgileneceğiz. Problem, matematik derslerinde gördüğünüz ıraksak serilerle ilgilidir. Pozitif terimli bir ıraksak serinin kısmi toplamlar dizisinin limiti sonsuza gittiği için, rahibin satranç tahtasının karelerine konulacak pirinç tanelerinin sayısı çok büyük bir hızla artmaktadır.
Bilgisayar programı yazmaya heves eden öğrenciler için, rahibin kaç pirinç alacağını hesaplayan iki Pascal programı yazacağız. Birincisi, seri kavramını kullanmadan, problemi for döngüsüne dayalı basit bir algoritma ile çözmektedir. İkinci çözüm ise, geometrik serilerin toplamını veren formüle dayanmaktadır. Her ikisi de aynı sonucu verir. Pascal yerine, Basic, C, vb. başka bir programlama dili de kullanabilirsiniz.
Birinci Çözüm:
Program Pirinc;
uses WinCrt;
Var
Pirinç, Toplam : Real;
Kareno : Integer;
Begin
Pirinç : = 1.0;
Toplam : = 0.0;
For KareNo : = 1 to 64 DO
Begin
Toplam: = Toplam + Pirinç ;
Pirinç: = 2.0 * Pirinç
End;
Wrinteln (‘Vezir’’in istediği Pirinç Sayısı: ‘ , Toplam: 1)
End.
İkinci Çözüm:
Yukarıdaki pirinç problemi, aslında ıraksak 1 + 21 + 22 + 23 + 24 + 25 +… geometrik serisinin ilk 64 teriminin toplamıdır. Matematik derslerinden bildiğiniz gibi, bu toplamı veren formül
(1-264) / (1-2) = 264 – 1 = exp (64*Ln(2)) -1
dir. Bunu yazan çok basit bir Pascal programı şudur:
Begin
Writeln (‘64. terimine kadar toplam = ‘ , exp (64*Ln(2)) – 1)
End.
Üçüncü Çözüm:
Hiç bilgisayar programı bilmeyenler, iyi bir hesap makinası ile
exp (64*Ln(2)) -1
sayısını hesaplayabilirler. Örneğin, Excel ile bu sayıyı kolayca bulabilirsiniz.