4 -misol. n natural sonini tub ko‘paytuvchilarga ajratuvchi dastur tuzing.
1-usul
#include
#include
using namespace std;
int main()
{
int n, i=2;
cout<<"n="; cin>>n;
while(n!=1) //n soni birdan farqli bo'lguncha davom etadi
{
if(n%i==0) //Agar n ni i ga bo'lganda qoldiq nol bo'lsa u holda uni ekranga chop etadi va n ni i bo'lib natija yana n ga yozadi.
{
cout< n=n/i;
}
else //aks holda i ning qiymati bitta oshiriladi
i++;
}
return 0;
}
2-usul
#include
using namespace std;
int main()
{
int n;
cout<<"n="; cin>>n;
for(int i=2; i<=n; i++)
for(int j=2; j<=i; j++)
if(n%j==0)
{
cout< n=n/j;
break;
}
return 0;
}
5 -misol. Berilgan n butun sonning tarkibiga 2 raqami kirish yoki kirmasligini aniqlovchi dastur yozilsin.
#include
#include
using namespace std;
int main()
{
int n, r, k=0;
cout<<"n="; cin>>n;
while(n!=0) //Sikl n dan farqli bo'lgancha davom etadi
{
r=n%10; //Har bir raqamni aniqlash
if(r==2) //Har bir raqamni ikki bilan solishtirish agar u ikkiga teng bo'lsa, u holda k rost va bo'lsin va sikldan chiqib ketsin. Aks holda k yolg'on bo'lib qolsin.
{
k=1;
break;
}
n=n/10;
}
if(k==1) //k ning rost yoki yolg'onligini tekshirish
cout<<"Bor";
else
cout<<"Yo'q";
return 0;
}
6 -misol. Raqamlar yig‘indisi berilgan natural songa teng bo‘lgan barcha uch xonali sonlar topilsin.
1-usul
#include
using namespace std;
int main()
{
int i=100, n, r, S=0, j=100;
cout<<" (28 dan kichik bo’lsin!) n="; cin>>n; //eng kata hisoblangan 999 soning raqamlar yig’indisi 27 ga teng
while(i<=999)
{
if(j!=0)
{
r=j%10;
S+=r;
j=j/10;
}
else
{
if(S==n)
cout < i++;
j=i;
S=0;
}
}
return 0;
}
2-usul
#include
using namespace std;
int main()
{
int i=100, n, r, S=0, j=100;
cout<<"n="; cin>>n;
while(i<=999)
{
S=0; j=i;
while(j!=0)
{
r=j%10;
S+=r;
j=j/10;
}
if(S==n)
cout< i++;
}
return 0;
}
7-misol. O‘zining raqamlari kublarining yig‘indisiga ikki xonali sonni qo‘shganda, huddi shu raqamlardan tashkil topgan, lekin teskari tartibda yozilgan son hosil bo‘lish xususiyatiga ega bo‘lgan ikki xonali son topilsin. (Dasturda sikl oldindan to‘xtatilsin).
1-usul
#include
#include
using namespace std;
int main()
{
int k, i=10, r, r1, S1, S;
while(i<=99) //Sikl i=10 dan 99 gacha davom etadi. Chunki bizdan ikki xonali sonni topsh talab etilmoqda
{
k=i; //i ning qiymatini k ga yozib qo'yamiz.
//Chunki i ning qiymati uning raqamlarini aniqlash natijasida o'zgarib ketishi mumkin.
r=k%10; //ikkinchi raqamini aniqlash
r1=k/10; //birinchi raqamini aniqlash
S=pow(r1,3)+pow(r,3)+i; //Shartning birinchi qismni tekshirish
S1=r*10+r1; //Shartning ikkinchi qismini tekshirish
if(S==S1) //Shartni tekshirish
{
cout< break; // Agar shart bajarilsa, siklni to'xtatish
}
i++; //Agar shart bajarilmasa i ning qiyamtini bittaga oshirish
}
return 0;
}
8-misol. Raqamlarining yig‘indisi kvadrati berilgan m songa teng bo‘lgan, n dan kichik bo‘lgan natural sonlarni chiqarish dasturi tuzilsin.
1-usul
#include
#include
using namespace std;
int main()
{
int S=0, n, m, r, i=10, k;
cout<<"n="; cin>>n;
cout<<"m="; cin>>m;
while(i<=n) //Sikl n gacha davom etadi
{
k=i; // i ning qiymatini sikl ichida o'zgarib ketishi mumkin. Shuning uchun k "qo'shimcha" o'zgaruvchidan foydalanamiz.
while(k!=0) //k dan noldan farqli bo'lguncha davom etadi
{
r=k%10; //har bir raqamini aniqlash
S+=r; //Raqamlar yig'indisini aniqlash
k=k/10; //Keyingi raqamini aniqlash uchun uning o'ngdan bitta raqamini "yo'qotish"
}
if(pow(S,2)==m) //Shartni tekshirish
cout< S=0; //S ni "bo'shatish"
i++; //i ni oshirish
}
return 0;
}
9-misol. Raqamlari yig‘indisi berilgan natural songa teng, barcha n 100000 natural sonlarni topish dasturini tuzing.
#include
#include
using namespace std;
int main()
{
long max=4194304;
int S=0, i=1, k, n, r;
cout<<"n="; cin>>n;
while(i<=max) //sikl eng uzun butun songacha davome etadi
{
k=i; // i ning qiymatini sikl ichida o'zgarib ketishi mumkin. Shuning uchun k "qo'shimcha" o'zgaruvchidan foydalanamiz.
while(k!=0) //k dan noldan farqli bo'lguncha davom etadi
{
r=k%10; //har bir raqamini aniqlash
S+=r; //Raqamlar yig'indisini aniqlash
k=k/10; //Keyingi raqamini aniqlash uchun uning o'ngdan bitta raqamini "yo'qotish"
}
if(S==n) //Shartni tekshirish
cout< S=0; //S ni "bo'shatish"
i++; //i ni oshirish
}
return 0;
}
10. Har bittasini 11 ga bo‘lganda berilgan sonning alohida raqamlari qiymatlaring kvadratlari yig‘indisiga teng bo‘lgan barcha uch xonali sonlar topilsin.
#include
#include
using namespace std;
int main()
{
int i=100, n, r, S=0;
cout<<"n="; cin>>n;
while(n!=0) //berilgan natural sonning raqamlari kvadratlari yig'indisini hisolash sikli
{
r=n%10;
S+=pow(r,2);
n=n/10;
}
while(i<=999)
{
if(S==(float)i/11) /*Bu yerda turga keltirish amalidan foydalnilmoqda. Chunki C++ tilida butun sonni butun songa bo'lganda natija butun chiqadi. Bizga esa bu kerak emas. Natijani i/11 ifodani float tipiga keltirib olinmoqda*/
cout< i++;
}
return 0;
}
11. 3 xonali son 3 raqami bilan tugaydi. Agar bu raqamni 2 ta belgi chapga sursa, ya’ni ushbu raqamdan boshlanadigan son hosil bo‘lsa, bunday son oldingi sonning 3 marta orttirilganiga nisbatan 1 taga ortiq bo‘ladi. Ushbu sonni toping.
#include
#include
using namespace std;
int main()
{
for (int i = 1; i <= 9; i++)
for (int j = 0; j <= 9; j++)
if ((100 * i + 10 * j + 3) * 3 + 1 == 300 + 10 * j + i)
cout << 100 * i + 10 * j + 3 << endl;
return 0;
}
12. O‘z raqamlari kublarining yig‘indisiga teng bo‘lgan barcha uch xonali sonlarni toping.
#include
#include
using namespace std;
int main()
{
int i=100, k, r, S=0;
while(i<=999)
{
k=i;
while(k!=0)
{
r=k%10;
S+=pow(r,3);
k=k/10;
}
if(S==i)
cout< i++;
S=0;
}
return 0;
}
13. 6 xonali o‘nlik son chap tomonga nisbatan 1 raqamidan boshlanadi. Agar ushbu raqamni birinchi xonadan o‘ng tomondagi oxirgi xonaga o‘tkazilsa, hosil bo‘lgan sonning qiymati joriy qiymatga nisbatan uch marta katta bo‘ladi. Joriy sonni toping.
#include
#include
using namespace std;
int main()
{
int i=100000, k, r, S=0, j=6;
while(i<=100010)
{
k=i;
while(k!=0)
{
r=k%10;
S+=r*pow(10,j-1);
k=k/10;
j--;
}
cout< if(S==3*i)
cout< i++;
S=0;
j=6;
}
return 0;
}
14. butun son berilgan. n o‘nlik sonning oxirgi m raqamlarini olish dasturini tuzing.
#include
#include
using namespace std;
int main()
{
int S=0, m, n, r;
cout<<"m="; cin>>m;
cout<<"n="; cin>>n;
while(S {
r=n%10; //Har bir raqamini aniqlash
S++; //Raqamlar sonini aniqlash
n=n/10; //Oxiridan bittadan yo'qotib borish
cout< }
return 0;
}
15. Shunday to‘rt xonali son topingki, uning oxirgi ikkita raqami ma’lum bir sonning kvadratiga teng bo‘lsin.
#include
#include
using namespace std;
int main()
{
int i=1000, n, r;
cout<<"n="; cin>>n; //Ma'lum bir son
while(i<=9999)
{
r=i%100;
if(r==pow(n,2))
cout< i++;
}
return 0;
}
16. Agar natural son o‘zining barcha bo‘luvchilari (o‘zidan tashqari) yig‘indisiga teng bo‘lsa mukammal deyiladi. 6 mukammal son, chunki 6=1+2+3,
8 mukammal son emas, chunki 8 - 1 + 2 + 4 ga teng emas. Kiritilgan n sonidan kichkina bo‘lgan barcha mukammal sonlarni chiqaruvchi dastur tuzing.
#include
using namespace std;
int Bol_yigindi(int i) //Funksiyaga i orqali murojaat amalga oshiriladi
{
int S=0;
for(int j=1; j<=i/2; j++) //Shu sonning bbarcha bo'luvchilari yig'indisini topush sikli
if(i%j==0)
S+=j;
return S;
}
int main()
{
int S, i, n;
cout<<"n="; cin>>n;
for(int i=1; i<=n; i++) //Funksiyaga 1 dan toki n sonigacha murojaat qilish sikli
{
S=Bol_yigindi(i); //Funksiyadan i sonining bo'luvchilari yig'indisi natija sifatida qaytadi.
if(S==i) //Chiqqan natijani shu sonning o'zi bilan taqqolash
//Agar teng bo'lsa, i ning qiymatini chiqarish
cout< }
return 0;
}
17. Har bittasi 11 ga bo‘linadigan va har birining raqamlari yig‘indisi 11 ga teng bo‘lgan to‘rt xonali sonlar topilsin. (Natija sifatida juda qiziqarli sonlar hosil bo’aldi)
#include
using namespace std;
int Raqam_yigindi(int i) //Funksiyaga i orqali murojaat amalga oshiriladi
{
int r, S=0;
while(i!=0)
{
r=i%10;
S+=r;
i=i/10;
}
return S;
}
int main()
{
int S;
for(int i=1000; i<=9999; i++)
{
S=Raqam_yigindi(i);
if(S==11 && i%11==0)
cout< }
return 0;
}
Do'stlaringiz bilan baham: |