Sofi Jermen nənənin ədədləri

Adil Aliyev
Kod əhli
Published in
3 min readNov 2, 2018

Çoxdandır dostum Heydərlə bu medium bloqunu açmağı düşünürdüm, amma tənbəllik imkan vermirdi. Bəzi cızma-qara yazılarımız da yığılıb qalıb…

Digər tərəfdən bir müddətdir Facebookda heç bir şey — nə şərh, nə layk, nə status yazmıram, baxım görüm nə qədər dirəşə biləcəm…

…vəziyyət elə alındı ki, itcity-dən dostlar belə bir sual yazdılar səhifələrində, bir çox dostlar da cavabı düz yazsalar da bir az ürəyimi tam açan cavab olmadı.

Mən də bir tərəfdən ora yazmaq istədim, digər tərəfdən də Facebookda yazmamaq üçün dirəşdiyimdən ora yazammadım. Amma cavabımı harasa yazmalı idim, qərara aldım elə bura yazım və bloqumuzun açılışını bu yazı ilə başlayım.

Əvvəl gəlin verilən sualı oxuyaq.

Əslində mənim diqqət yetirilməsini istədiyim məsələ Sofi Jermenin ədədlərində yox sadə ədədlərin tapılması söhbətindədir.

Bir çox dostlar 2-dən ədədin özünə qədər gedib ədədin tam bölənlərinin olub-olmadığını yoxlayır, bu minvalla sadə olub-olmadığına qərar verirlər. Sonra da Sofi nənənin probleminə keçirlər.

O dostlar ki, əvvəllər Alqoritm dərsinə yaxşı qulaq asıb, ya da olimpiadalarla məşğul olub, onlar ədədin özünə yox kökünə qədər gəlməklə kifayətlənib işi bir az tezləşdirirlər. Bu da əla.

Amma həyatda işlər belə olmur, bu üsulların böyük məsələlərdə adamı da kompüteri də əziyyətə salır. Ona görə də indi mən nağıl edim siz də qulaq asıb, sonra fikirlərinizi deyin.

Biri vardı biri yoxdu, bir Məlikməmməd var idi, riyaziyyatı yaxşı oxuyurdu, kodlaşdırmanın sintaksisini yaxşı bilirdi, amma nə riyaziyyatın nə də kodlaşdırmanın maraqlı tərəflərinə girmirdi. Elə bilirdi ki, hər şeydən başı çıxır. Dedilər ki, Sofi nənənin ədədləri lazımdır 100000-ə qədər. Götürdü yazdı belə bir kod, aldı cavabı.

Cavab oldu belə:

— — — — — — — — — — -
Sofi nənə ədədlərinin sayı: 1171
32.833176374435425 saniyə

İşləməyinə işlədi, amma 32 saniyədən də çox çəkdi zəhrimar.

Məlikməmmədin dostu Qulamhüseyn dərsdə alqoritmlərə diqqətlə qulaq asırdı. Bir dəfə dərsdə müəllimə demişdi ki, olmazmı bir ədədin yarısına kimi gedək, onsuz da yarısından sonra ədədin bölənləri olası deyil. Müəllim də demişdi ki, əslində heç yarısı da yox, elə kökünə qədər gəlsəniz bəs edər. Qulamhüseyn bu əhvalatı yadına salaraq aldı laptopu, yazdı kodu bax belə.

Aldı belə bir cavab:

— — — — — — — — — — -
Sofi nənə ədədlərinin sayı: 1171
0.25084667205810547 saniyə

Bunların dostu Nisəxanım bir ara olimpiadaya hazırlaşırdı, özü də forslu, nazlı bir qız idi. Özünü ağıllı göstərmək üçün Qulamhüseynin kodunu götürüb bir az dəyişdirdi ki, dinamik proqramlaşdırmadan istifadə etsin. Yazdı belə bir kod.

Hərçənd elə bir irəliləyiş olmadı. Belə bir şey aldı:

— — — — — — — — — — -
Sofi nənə ədədlərinin sayı: 1171
0.20549511909484863 saniyə

Bu uşaqlar kodları ilə eşələnməklərində olsun, sizə kimdən deyim, Ağabaladan. Ağabala qəribə bir uşaq idi, necə deyərlər başdan bir az o məsələ. Həmişə bir-birinə aid olmayan şeylər arasında əlaqə axtarardı. Qabağına nə keçsə Google-da eşələnərdi.

Bir dəfə “7 oğul istərəm” filminə baxanda eşidir ki, orda Kələntər dayı oxuyur ki, “Hamam haman içində, xəlbir saman içində”. Açır Google-da axtarır görsün xəlbir nə mənə şeydir. Bunu axtaranda “Eratosfen xəlbiri” adlı məqalə çıxır qabağına, açıb oxuyur görür ki, sadə ədədlər haqqında maraqlı bir zaddır.

Eratosfen xəlbirini qurmaq üçün əvvəlcə böyük bir cədvəl qurub natural ədədləri yazırıq ora. Sonra ikidən başlayırıq. İki sadə ədəddir ona görə onu ötürüb hər 2-ci ədədin siyahıda üzərindən xətt çəkirik. Beləliklə 4,6,8,10,12… gedir işinin dalınca. Çünki, hamısı mürəkkəb ədəddir. Siyahı bitən kimi keçirik növbəti ədədlərdən birinə, hansı ki, üzərindən xətt çəkilməyib. Tərslikdən həmin ədəd həmişə sadədir. Bu dəfə 3 ədədidir, onu saxlayıb üç-üç hoppanırıq, 6,9,12,15,18,… bunlar da getdi. Növbəti olacaq 5. Bu da sadədir, bunu da saxlayıb beş-beş tullanırıq, 10,15,20,25,… bunlar da o məsələ oldular. Bu minvalla davam edirik.

Eratosfen xəlbiri (mənbə: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)

Yerdə qalan nə ədəd varsa hamısı sadədir. Vəssalam şüt tamam. Ağabala götürdü bunun kodunu yazdı, görək axırda nə aldı.

— — — — — — — — — — -
Sofi nənə ədədlərinin sayı: 1171
0.041445940017700195 saniyə

Nə az, nə çox Qulamhüseynin həllindən 5 dəfə daha tez işlədi.

Göydən üç alma düşdü, biri mənim, biri Qulamhüseynin, biri də sizin.

Amma almanı yeməmişdən qabaq sıfırın birini artırıb baxın görün vəziyyət nətər olur…

P.S. Sofi nənənin soyadı əslində Jermen imiş, amma bəzi mənbələrdə Cermen yazılıb. Namiq müəllimin sayəsində bunu da öyrənmiş olduq və düzəltdik səhvimizi.

--

--