sanagich++;
return sanagich;
}
Bu erda asosiy funksiyadan counter statik o‘zgaruvchiga ega
Sanagicht() funksiyasi 30 marta chaqiriladi. Funksiya birinchi marta
chaqirilganda sanagich o‘zgaruvchiga 0 qiymatini qabul qiladi va uning
q>ymati birga ortgan holda funksiya qiymati sifatida qaytariladi. Statik
o‘zgaruvchilar qiymatlarini funksiyani bir chaqirilishidan ikkinchisiga
saqlanib qolinishi sababli, keyingi har bir chaqirishlarda sanagich qiymati
bittaga ortib boradi.
M asala. Berilgan ishorasiz butun sonning barcha tub bo4uvchilari
aniqlansin. Masalani yechish algoritmi quyidagi takrorlanuvchijarayondan
!borat bo‘ladi: berilgan son tub songa (l-qadamda 2 ga) bo4inadi. Agar
qoldiq 0 bo4sa, tub son chop qilinadi va bo4inuvchi sifatida bo4inma
olinadi, aks holda navbatdagi tub son olinadi. Takrorlash navbatdagi tub
son bo‘linuvchiga teng bo4guncha davom etadi.
63
Programma matni:
#include
#include
int N a v b _ t u b ();
int main()
{
unsigned int n,p;
cout<<"\nn qiymatini kiritng: ";
c i n > > n ;
cout<<"\nl";
p = N a v b _ t u b ();
w h i l e (n>=p)
{
i f (n%p==0)
{
cout<<"*"<
n = n / p ;
}
else p = N a v b_tub();
}
return 0;
>
int N a v b _ t u b ()
{
static unsigned int tub=l;
f o r (;;)
{
t u b + + ;
short int h a _ t u b = l ;
for(int i=2;i<=tub/2;i++)
if (tub%i=0) ha_tub=0 ;
i f (ha_tub)return t u b ;
}
return 0;
}
Programmada navbatdagi tub sonni hosil qilish funksiya ko‘ri-
nishida amalga oshirilgan. Navb_tub() funksiyasining har chaqirilishida
oxirgi tub sondan keyingi tub son topiladi. Oxirgi tub sonni «eslab» qolish
uchun tub o'zgaruvchisi static qilib aniqlangan.
Programma ishga tushganda klaviaturadan n o‘zgaruvchisining
qiymati sifatida 60 soni kiritilsa, ekranga quyidagi ko‘paytma chop etiladi:
1*2*2*3*5
Do'stlaringiz bilan baham: |