n % 10vən // 10ilə ədədin rəqəmlərini ayırmaq, onların cəmini, hasilini, sayını və tərs ədədi tapmaq- bölənləri saymaq və toplamaq, ədədin sadə və ya tam kvadrat olduğunu yoxlamaq
- ƏBOB və ƏKOB-u Evklid alqoritmi ilə, 1 + 1/2 + … + 1/n kimi cəmləri isə dövrlə hesablamaq
- parçadakı bütün ədədləri iç-içə dövrlərlə yoxlamaq və DİM tapşırıqlarında hazır şablonları tanımaq
Bank kartının nömrəsi düzgün yığılıbmı? Bunu yoxlayan alqoritm nömrəni rəqəm-rəqəm ayırır, rəqəmləri toplayır və qalığa baxır. DİM-in hər informatika variantında «Dövr operatoru. Ədədlər üzərində əməllər» mövzusundan 3–4 tapşırıq olur, 2025–2026-cı illərin dörd variantından üçündə isə yazılı proqramlardan biri də bu mövzudan idi. Yaxşı xəbər: bu tapşırıqların demək olar hamısı bir neçə hazır şablondan qurulur — rəqəm dövrü, bölən dövrü və Evklid alqoritmi. Bu dərs «Dövr operatorları: for, while, dövr addımı, break, continue və iç-içə dövrlər» dərsinin davamıdır.
Rəqəmlərin ayrılması: n % 10 və n // 10
Onluq say sistemində ədədin son rəqəmi onun 10-a bölünməsindən alınan qalıqdır, 10-a tam bölmə isə həmin rəqəmi atır: 5682 % 10 = 2, 5682 // 10 = 568. Bu iki əməli dövrdə təkrarlasaq, rəqəmləri sağdan sola bir-bir alarıq; ədəd 0 olanda rəqəmlər bitir.
- dson rəqəm (0…9)
- %bölmədən qalıq
- //tam bölmə: kəsr hissə atılır, ədəd bir rəqəm qısalır
Rəqəm dövrünün iki əsas əmri. Dövr while n > 0: şərti ilə işləyir.
- n // pow(10, k) % 10sağdan k-cı rəqəm (k = 0 — təkliklər, 1 — onluqlar, 2 — yüzlüklər)
- n % pow(10, k)son k rəqəmdən düzələn ədəd
- n // pow(10, k)son k rəqəm atılandan sonra qalan ədəd
Dövrsüz istənilən rəqəmi götürmək olar: 5682 // 100 % 10 = 6, 5682 % 100 = 82, 5682 // 1000 = 5.
Hesablayın: 1) 7049 % 10 və 7049 // 10; 2) 7049 ədədinin onluqlar və yüzlüklər rəqəmi; 3) 30 % 10 və 30 // 10.
Həllini göstərHəllini gizlət
2) Onluqlar: 7049 // 10 % 10 = 704 % 10 = 4. Yüzlüklər: 7049 // 100 % 10 = 70 % 10 = 0.
3) 30 % 10 = 0, 30 // 10 = 3. Son rəqəm 0 ola bilər — rəqəm dövrü onu da sayır.
- 1Nüsxəni saxla
Dövrdə n dəyişib 0 olacaq. İlkin ədəd sonra lazımdırsa, əvvəlcə
m = nyaz. - 2Başlanğıc qiymətlər
cəm
s = 0, hasilp = 1, sayc = 0, tərs ədədr = 0. - 3Dövrün şərti
while n > 0:— rəqəm qaldıqca. - 4Rəqəmi götür və işlə
d = n % 10, sonras = s + d,p = p * d,c = c + 1,r = r * 10 + dvə ya şərt:if d % 2 == 0:. - 5Rəqəmi at
n = n // 10. Bu sətir unudulsa, dövr sonsuz olar.
n = 5682
s = 0
p = 1
c = 0
r = 0
while n > 0:
d = n % 10
s = s + d
p = p * d
c = c + 1
r = r * 10 + d
n = n // 10
print(s, p, c, r)▸ Gözlənilən nəticə
21 480 4 2865
n = int(input()) olur; burada qiyməti dəyişənə yazmışıq ki, proqram brauzerdə işləsin.x = 3704
k = 0
m = x
while x > 0:
if x % 10 % 2 == 0:
k = k + 1
x = x // 10
print(m * 10 + k)▸ Gözlənilən nəticə
37042
İmtahanda yuxarıdakı proqram x = int(input()) ilə başlayır və klaviaturadan 3704 daxil edilir. Proqramın nəticəsini müəyyən edin.
A) 37041 B) 3704 C) 37042 D) 24073 E) 37043
Həllini göstərHəllini gizlət
3704 → 4, cüt, k = 1
370 → 0, cüt, k = 2
37 → 7, tək, k = 2
3 → 3, tək, k = 2
x = 0 — dövr bitir. m ilkin ədədi saxlayıb: m · 10 + k = 37040 + 2 = 37042.
Cavab: C. Tələ: 0 da cüt rəqəmdir; onu unudan 37041 seçir.
Tərs ədəd, palindrom və «bütün rəqəmlər tək»
Tərs ədədi qurmaq üçün hər addımda köhnə nəticəni 10-a vurub yeni rəqəmi əlavə edirik: əvvəlki rəqəmlər bir mövqe sola sürüşür. Ədəd öz tərsinə bərabərdirsə, o palindromdur: 121, 4554, 7.
- rtərs ədəd; başlanğıcda r = 0
- n % 10növbəti son rəqəm
Tərs ədəd: 5682 üçün r = 2, 28, 286, 2865. Palindrom yoxlaması: dövrdən sonra r == m (m — ilkin ədədin nüsxəsi).
- cn-in rəqəmlərinin sayı (rəqəm dövrünün sayğacı)
- aəlavə olunan rəqəm
a rəqəmini ədədin əvvəlinə və sonuna yazmaq.
1) 1230 ədədinin tərsini tapın; o, palindromdurmu? 2) 4554 palindromdurmu? 3) 309 ədədinin əvvəlinə və sonuna 7 rəqəmini yazın.
Həllini göstərHəllini gizlət
2) r: 4 → 45 → 455 → 4554 = n, deməli palindromdur.
3) 309-da c = 3 rəqəm var: 7 · 10³ + 309 = 7309; sonuna: 309 · 10 + 7 = 3097.
«Bütün rəqəmlər təkdirmi?» sualına iki yolla cavab vermək olar: tək rəqəmləri sayıb rəqəmlərin ümumi sayı ilə müqayisə etmək, ya da bayraq dəyişəni götürmək: əvvəlcə t = 1 («hələ ki hamısı tək»), cüt rəqəm görən kimi t = 0. Aşağıdakı proqramda xarici dövr ədədləri, daxili dövr isə rəqəmləri gəzir.
for n in [357, 48, 1991, 7, 5031]:
m = n
t = 1
while m > 0:
if m % 10 % 2 == 0:
t = 0
m = m // 10
if t == 1:
print(n)▸ Gözlənilən nəticə
357 1991 7
int(input()) ilə oxunur.Bölənlər, sadə ədədlər və tam kvadratlar
n ədədi i-yə qalıqsız bölünürsə, i ədədi n-in bölənidir: n % i == 0. 1-dən böyük hər natural ədədin ən azı iki böləni var: 1 və özü.
Düz iki natural böləni (1 və özü) olan natural ədəd: 2, 3, 5, 7, 11, 13, … İkidən çox böləni olan ədəd mürəkkəb ədəddir; 1 nə sadə, nə də mürəkkəbdir.
Hansısa natural ədədin kvadratı olan ədəd: 1, 4, 9, 16, 25, 36, …
- iyoxlanılan namizəd bölən
- c == 2bölənlərin sayı 2-dirsə, n sadədir
Bölən dövrü: for i in range(1, n + 1): və içində if n % i == 0:.
n = 60
c = 0
s = 0
t = 0
for i in range(1, n + 1):
if n % i == 0:
print(i, end=' ')
c = c + 1
s = s + i
if i % 2 == 1:
t = t + i
print()
print(c, s, t)▸ Gözlənilən nəticə
1 2 3 4 5 6 10 12 15 20 30 60 12 168 24
end=' ' bölənləri bir sətirdə çap edir.- pow(a, 0.5)a-nın kvadrat kökü, kəsr tipli ədəd (
49 ** 0.5→7.0) - int(…)kəsr hissəni atır
Kök tam ədəddirsə, a tam kvadratdır. DİM həllərində a ** (1/2) yazılışı da işlənir — eyni şeydir.
1) 36-nın neçə böləni var? 2) 97 sadə ədəddirmi? 3) 28-in özündən başqa bölənlərinin cəmini tapın. 4) [30; 50] parçasında neçə tam kvadrat var?
Həllini göstərHəllini gizlət
2) 2-dən 9-a qədər yoxlamaq kifayətdir (10 · 10 = 100 > 97). Bu ədədlərdən heç biri 97-ni bölmür, deməli 97-nin cəmi iki böləni var — sadədir.
3) 1 + 2 + 4 + 7 + 14 = 28 — cəm ədədin özünə bərabərdir (belə ədədlər mükəmməl ədəd adlanır).
4) 36 və 49:
36 ** 0.5 → 6.0, 49 ** 0.5 → 7.0. Cavab: 2.İç-içə dövrlər: parçadakı bütün ədədləri yoxlamaq
Tapşırıq bir ədəd üçün deyil, [a; b] parçasındakı hər ədəd üçün verilirsə, bölən (və ya rəqəm) dövrünü başqa dövrün içinə qoyuruq: xarici dövr ədədləri, daxili dövr bölənləri gəzir. Sayğac (c = 0) hər yeni ədəd üçün sıfırlanmalıdır, ona görə də o, xarici dövrün içində yazılır.
a = 20
b = 40
k = 0
for n in range(a, b + 1):
c = 0
for i in range(1, n + 1):
if n % i == 0:
c = c + 1
if c == 2:
print(n, end=' ')
k = k + 1
print()
print('count =', k)▸ Gözlənilən nəticə
23 29 31 37 count = 4
c = 0 sətrini xarici dövrdən əvvələ keçirib nə dəyişdiyinə bax.Yuxarıdakı proqramda if n % i == 0 yoxlaması cəmi neçə dəfə icra olunur?
Həllini göstərHəllini gizlət
Cavab: 630. √n qaydası ilə yoxlamaların sayı xeyli azalardı.
ƏBOB, ƏKOB və cəmlər
İki ədədin ən böyük ortaq bölənini (ƏBOB) bütün bölənləri yoxlamadan, Evklid alqoritmi ilə tapmaq olar. O, bir fakta əsaslanır: a-nı b-yə böləndə alınan qalıq da ƏBOB(a; b)-yə bölünür. Deməli, (a; b) cütünü (b; a % b) cütü ilə əvəz etmək olar və ədədlər sürətlə kiçilir.
- a % ba-nın b-yə bölünməsindən qalıq
- b = 0qalıq 0 olanda dayanırıq: cavab a-dır
Evklid alqoritmi. Dərsliklərdə çıxma variantı da var: ədədlər bərabərləşənə qədər böyükdən kiçiyi çıx.
- a · biki ədədin hasili
Ən kiçik ortaq bölünən ƏBOB-dan dərhal alınır.
a = 84
b = 36
p = a * b
while b != 0:
r = a % b
a = b
b = r
print(a, p // a)▸ Gözlənilən nəticə
12 252
Evklid alqoritmi ilə ƏBOB(126; 84) və ƏKOB(126; 84)-ü tapın. Dövr neçə dəfə işləyir?
Həllini göstərHəllini gizlət
(84; 42): 84 % 42 = 0 → (42; 0) — dayanırıq.
ƏBOB = 42, dövr 2 dəfə işlədi. ƏKOB = 126 · 84 / 42 = 10584 / 42 = 252.
Cəm və hasil ardıcıllıqları da eyni sxemlə hesablanır: toplayıcı (s = 0) və ya vurucu (p = 1) dəyişən, dövrün hər addımında bir hədd. Kəsrlərdə / işlədilir, nəticə kəsr ədəd olur.
- s = s + 1 / is = s + 1 / icəmin dövrdəki şablonu
- p = p * ifaktorialın şablonu (başlanğıcda p = 1)
i dövr dəyişənidir: for i in range(1, n + 1):.
n = 4
s = 0
p = 1
for i in range(1, n + 1):
s = s + 1 / i
p = p * i
print(round(s, 4), p)▸ Gözlənilən nəticə
2.0833 24
round(s, 4) nəticəni vergüldən sonra 4 rəqəmə qədər yuvarlaqlaşdırır.S = 1 − 1/2 + 1/3 − 1/4 cəmini hesablayan dövr qurun və S-i tapın.
Həllini göstərHəllini gizlət
s = s + z / i və z = -z.i = 1: s = 1
i = 2: s = 1 − 1/2 = 1/2
i = 3: s = 1/2 + 1/3 = 5/6
i = 4: s = 5/6 − 1/4 = 7/12 ≈ 0,5833.
Eyni fikir blok-sxemdə «Blok-sxemin qurulması: yazılı tapşırıqlar» dərsində işlənir.
| Tapşırıq | Şablon |
|---|---|
| rəqəmlərin cəmi | s = s + n % 10, n = n // 10 |
| rəqəmlərin sayı | c = c + 1; len(str(n)) |
| tərs ədəd, palindrom | r = r * 10 + n % 10; r == m |
| bölənlərin sayı | if n % i == 0: c = c + 1 |
| sadə ədəd | c == 2 |
| tam kvadrat | a ** 0.5 == int(a ** 0.5) |
| ƏBOB | r = a % b, a = b, b = r |
| 1 + 1/2 + … + 1/n cəmi | s = s + 1 / i |
- 1.Ədədin son rəqəmi: d = n 10
- 2.Tərs ədəd: r = r * + n % 10
- 3.Sadə ədədin düz böləni var.
- 4.ƏBOB(48; 18) =
- 5.1-dən 100-ə qədər tam kvadratların sayı:
while dövrü ilə n = 90517 ədədinin rəqəmlərinin cəmini və tərs ədədi tapın və onları bir sətirdə, boşluqla ayıraraq çap edin.
n = 90517
s = 0
r = 0
# digit loop here
print(s, r)▸ Gözlənilən nəticə
22 71509
1-dən 100-ə qədər (daxil olmaqla) düz 3 böləni olan ədədləri çap edin — hər birini ayrıca sətirdə. Sonra onlara bax: bu ədədlərin ortaq cəhəti nədir?
for n in range(1, 101):
c = 0
# count the divisors of n here
if c == 3:
print(n)▸ Gözlənilən nəticə
4 9 25 49
Əsas fikirlər
n % 10son rəqəmi verir,n // 10onu atır; rəqəm dövrüwhile n > 0:şərti ilə işləyir.- Cəm 0-dan, hasil 1-dən başlayır; tərs ədəd
r = r * 10 + dilə qurulur, palindromda r ilkin ədədə bərabərdir. - i n-in bölənidir ⇔
n % i == 0; sadə ədədin düz 2 böləni var, sadəliyi yoxlamaq üçüni * i <= n-ə qədər getmək kifayətdir. - Tam kvadrat:
a ** 0.5 == int(a ** 0.5); ƏBOB — Evklid alqoritmi, ƏKOB = a · b / ƏBOB. - Parçadakı hər ədəd üçün xarici dövr ədədləri, daxili dövr bölənləri və ya rəqəmləri gəzir; sayğac xarici dövrün içində sıfırlanır.
Özünü yoxla
12 sual. Hər düzgün cavab XP qazandırır.