sadece funksiya ile
ebob = __gcd(a,b);
:)
kitabxanasini qeyd eleyin
[code]
#include
#include
using namespace std;
int main()
{
cout << __gcd(100,24);
return 0;
}
[/code]
P.S. - Cavablar.net -ə müraciət.
1) Kodun sintaksis rəngləməsi imkanını əlavə etmək
2) Kansol çıxış nəticələrini daxil etmək üçün teq əlavə etmək
3) Mənbə kodu buferə köçürmək üçün düymə əlavə etmək
[code]//iki ededin EBOB -nu hesablamaq ucun proqram
#include
using namespace std;
int main()
{
//ededleri yadda saxlamaq ucun
int a, b;
//bolenlerin yadda saxlamaq ucun
int bola[100], bolb[100];
//bolenlerin sayini yadda saxlamaq ucun
int bola_say, bolb_say;
//ortaq bolenleri yadda saxlamaq ucun cerge ve say
int ort[100], ort_say;
//ebob
int ebob;
//saygac
int i, j;
//ededleri istifadecinden alaq
cout <> a >> b;
//birinci ededin bolenlerini ve sayini hesablayaq
bola_say = 0;
i = 2;
while (a != 1) {
while (a%i == 0) {
bola[bola_say] = i;
bola_say++;
a /= i;
}
i++;
}
//birinci ededin bolenlerini cap ededk
cout << "\nBirinci ededinin bolenleri: \n";
for (i = 0; i < bola_say; ++i)
cout << bola[i] << " ";
cout << "\n";
//ikinci ededin bolenlerini ve sayini hesablayaq
bolb_say = 0;
i = 2;
while (b != 1) {
while (b%i == 0) {
bolb[bolb_say] = i;
bolb_say++;
b /= i;
}
i++;
}
//ikinci ededin bolenlerini cap ededk
cout << "\nIkinci ededinin bolenleri: \n";
for (i = 0; i < bolb_say; ++i)
cout << bolb[i] << " ";
cout << "\n";
//her iki ededin bolenleri arasinda ortaq olanlari ve sayini tapaq
//bunun ucun ikiqat dovrden istifade etmeliyik
//eyni ortaq boleni iki defe hesablamamaq ucun tapdiqdan sonra
//1-e menimsedeceyik
ort_say = 0;
for (i=0; i<bola_say; ++i)
for (j=0; j<bolb_say; ++j)
if (bolb[j] == bola[i]) {
ort[ort_say] = bolb[j];
bolb[j] = 1;
ort_say++;
break;
}
//ortaq bolenleri cap edek
cout <<"\nHer iki ededin ortaq bolenleri: \n";
for (i = 0; i < ort_say; ++i)
cout << ort[i] << " ";
//ortaq bolenlerin hasilini, yeni ebob -u tapaq
ebob = 1;
for (i = 0; i < ort_say; ++i)
ebob *= ort[i];
cout <<"\n\nHer iki ededin EBOB -u = " << ebob;
return 0;
}[/code]
Icra nəticəsi:
Zehmet olmasa her iki ededi daxil edin
48 72
Birinci ededinin bolenleri:
2 2 2 2 3
Ikinci ededinin bolenleri:
2 2 2 3 3
Her iki ededin ortaq bolenleri:
2 2 2 3
Her iki ededin EBOB -u = 24
Proqram düz işləyir, amma 8-ci sətirdə sintaksis səhv var
[code] cout a >> b;[/code]
əvəzinə
[code] cin >> a >> b;[/code]
olmalıdır. Həm də sadəcə həlli vermək düzgün deyil, imkan daxilində alqoritmi də izah etmək yaxşı olar.
[code]#include
using namespace std;
int main()
{
int a, b;
cout <> a >> b;
while(a != b)
{
if(a > b)
a -= b;
else
b -= a;
}
cout << "EBOB = " << a;
return 0;
}[/code]
Salam. Buyurun. Rekursiya ilə həll.
[code]#include
using namespace std;
int NOD (int a, int b)
{
while (a != b)
{
if (a > b)
a -= b;
else
b -= a;
}
return a;
}
int main ()
{long long int n,m,a;
cin>>n>>m;
a=NOD (n, m);
cout<<a<<endl;
return 0;
}[/code]