Другие языки программирования и технологии

Вычислить наибольший общий делитель двух натуральных чисел с++

#include <iostream>

using namespace std;

int main()
{
int a,b;
cin>>a>>b;
while (a>0 && b>0)
{
if (a>b) a = a % b;
else b = b % a;
}
cout<<a+b;
return 0;
}
Алик Молотов
Алик Молотов
2 307
Лучший ответ
#include "stdafx.h"
#include <iostream>
using namespace std;

int nod(int x, int y){
 int n, r;
 (x < y? n = x : n = y);
 r = 1;
 for (int i = 1; i <= n; i++)
  if ((x % i == 0)&&(y % i == 0))
   r = i;
 return r;
}

int main(){
 int x, y;
 cout << "X = ";
 cin >> x;
 cout << "Y = ";
 cin >> y;
 cout << nod(x, y);
 cin.get();
 cin.get();
 return 0;
}
#include <iostream>
using namespace std;
int nod(int a, int b) { return b? nod(b, a % b) : a; }
int main() {
cout << " a & b: "; int a, b; cin >> a >> b;
if (a < 1 || b < 1) exit(1);
cout << "nod: " << nod(a, b) << endl;
cin.sync(); cin.get();
}
Вот видео, где объясняется решение этой задачи: (https://www.youtube.com/watch?v=o6O2PJN-8_c&list=UUu8GWtWppaY2FSB4RigaO9g)
===========================
#include <iostream>

using namespace std;

int main(){

int a, b, min, max, res, gcd, lcm;

cout << "Enter two numbers: ";
if(!(cin >> a >> b)){
cout << "You entered some wrong numbers.";
system("pause >> void");
return -1;
}

if(a > b) {
min = b;
max = a;
} else {
min = a;
max = b;
}

do{
res = max - min;
if(res < min){
max = min;
min = res;
} else max = res;

}while(min != max);

gcd = min;

cout << "GCD of " << a << " and " << b << " is " << gcd << endl;

lcm = abs(a * b)/ gcd;

cout << "LCM of " << a << " and " << b << " is " << lcm;
system("pause >> void");
return 0;
}
a*&; b*&

А если наименьший.. . и не делитель... :

алгоритм таков:

находим все простые числа до а/b деленных на 2(больше нам не нужно)

int n[1000] // простые числа

int j;

for int i, 1, a/2{

b==1;

for int i1,1,j{

?(i%n[i1]=0){b==0}

}

?b{j++;n[j]==i}

}

находи короч простые числа состава а/б:

int i;

int m[100000]

While (a=1)! {

for int i2,1,j {

?(a%n[i2]=0){m[i]==n[i2]; i++; break }

}

}

А потом почленно сравниваем и одинаковые удаляем а потом перемножаем.. . дальше писать лень.. . разберешся

Похожие вопросы