Как составить программу нахождения наибольшего общего делителя трех чисел

Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу: НОД(А, В, С) = НОД(НОД(А, В), С)



Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу: НОД(А, В, С) = НОД(НОД(А, В), С).
   


Program zad_2_nica;
var A, B, C: integer;
begin
   write (‘Введите A: ‘);
   read (A);
   write (‘Введите B: ‘);
   read (B);
   write (‘Введите C: ‘);
   read (C);
   while (A<>B)
   do begin
      if A>B
      then A:=A-B
      else B:=B-A
   end;
   while (A<>C)
   do begin
      if A>C
      then A:=A-C
      else C:=C-A
   end;
   writeln (‘НОД(A,B,C)=’, A)
end.

1 / 1 / 0

Регистрация: 06.06.2009

Сообщений: 35

1

НОД для трех чисел.

10.07.2009, 18:06. Показов 23785. Ответов 8


Студворк — интернет-сервис помощи студентам

Здорова народ! Как найти найболшый общий делитель для трьох чисел?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.07.2009, 18:06

8

Айхрень…

306 / 176 / 7

Регистрация: 02.06.2009

Сообщений: 1,077

10.07.2009, 18:24

2



0



1 / 1 / 0

Регистрация: 06.06.2009

Сообщений: 35

10.07.2009, 18:39

 [ТС]

3

Спасибо я знаю за алгоритм евкліда но незнаю как найти нод для 3 чисел



0



ISergey

Maniac

Эксперт С++

1463 / 964 / 160

Регистрация: 02.01.2009

Сообщений: 2,818

Записей в блоге: 1

10.07.2009, 19:05

4

если правильно гуглить то можно найти

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
template < int A, int B, int C >
struct GCD {
    enum { value = GCD<A, C, B % C>::value };
};
 
template< int A, int B >
struct GCD <A, B, 0>{
    enum { value = GCD< B, A % B, 0 >::value };
};
 
template< int A >
struct GCD<A, 0, 0> {
    enum { value = A };
};
 
 
int main() 
{
    std::cout << "30, 15, 45 =  " << GCD<30, 15, 45>::value << std::endl;
    return 0;
}

метопрограммирование интересная штука..



0



Search..

Заказ софта

343 / 188 / 21

Регистрация: 26.05.2009

Сообщений: 863

10.07.2009, 19:53

5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main(int argc, char * argv [])
{
    int one, two, three, del = 1;
 
    std::cout << "Enter Three Number: ";
    std::cin  >> one >> two >> three;
 
    for(int i = 1; i <= one; i++)
    {
        if(one % i == 0 && two % i == 0 && three % i == 0)
        {
            del = i;
        }
 
    }
 
    std::cout << "NOD: " << del << "n";
 
    return 0;
}



0



Эксперт С++

7175 / 3234 / 81

Регистрация: 17.06.2009

Сообщений: 14,164

10.07.2009, 20:33

6

Пусть есть числа A, B, C.
Пусть есть функция НОД(A,B) от двух чисел.
Тогда очевидно что НОД(A,B,C) = НОД( НОД(A,B), C )



0



<Norton>

Отдыхающий:)

94 / 91 / 22

Регистрация: 05.04.2009

Сообщений: 188

10.07.2009, 20:50

7

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <conio>
using namespace std;
int nod(int a,int b);
int main()
{
    int a,b,c;
        cout<<"a = ";
        cin>>a;
        cout<<"b = ";
        cin>>b;
        cout<<"c = ";
        cin>>c;
    cout<<nod(nod(a,b),c);
    getch();
    return 0;
}
int nod(int a,int b)
{
    while(a!=b)
        if(a>b)
        a-=b;
    else
        b-=a;
    return a;
}



0



1 / 1 / 0

Регистрация: 06.06.2009

Сообщений: 35

10.07.2009, 23:21

 [ТС]

8

спасибо вы мне много помогли



0



Pavelzii

0 / 0 / 0

Регистрация: 25.09.2009

Сообщений: 3

25.09.2009, 11:17

9

Такая хрень тоже должна прокатить, но пример Search.. клевый:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
// Определение НОД для 3-ёх чисел
int nod(int a, int b);
 
int main(){
   int a=0;
   int b=0;
   int c=0;
    while(1){
        cout<<"vvedite a ";
        cin>>a;
            if (a==0)
            break;
            cout<<"vvedite b ";
            cin>>b;
            cout<<"vvedite c ";
            cin>>c;
        cout<<"NOD= "<<nod(nod(a,b),c)<<endl;
        }
return 0;
}
int nod(int a, int b){ 
  int t=a%b;
  if (t==0)
  return abs(b);
  else 
  return nod(b,t);
}



0



Задача 1
Используем вспомогательную функцию NOD (x, y) [PascaloABC]:

var X, Y, Z : longint;
function NOD ( x, y : longint): longint;
begin
if x <> 0 then NOD := NOD (y mod x, x) else NOD := y;
end;

begin
Write ( ‘ X = ‘); ReadLn (X);
Write ( ‘ Y = ‘); ReadLn (Y);
Write ( ‘ Z = ‘); ReadLn (Z);
Writeln ( ‘ НОД этих трех чисел = ‘, NOD (NOD (X, Y), Z ));
end.
Задача 2

var X, Y : longint;
function NOD ( x, y : longint): longint;
begin
if x <> 0 then NOD := NOD (y mod x, x) else NOD := y;
end;

begin
Write ( ‘ X = ‘); ReadLn (X);
Write ( ‘ Y = ‘); ReadLn (Y);
Writeln ( ‘ НОК = ‘, ( (X*Y) div NOD (X, Y )));
end.

Оглавление:

  • 1 ОТВЕТЫ Решебник — ГДЗ Информатика — §16.Алгоритм Евклида, Семакин 9 класс
    • 1.1 Вопросы и задания
      1. Выполните на компьютере программу Evklid (из параграфа). Протестируйте ее на значениях М = 32, N = 24; М = 696, N = 234.
      2. Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу:
      НОД(А, В, С) * НОД(НОД(А, В), С).
      3. Составьте программу нахождения наименьшего общего кратного (НОК) двух чисел, используя формулу:
      А * В = НОД(А, В)-НОК(А, В).
    • 1.2 Ответы на вопросы параграф 16 из учебника Семакина 9 класс
    • 1.3 2. Использование алгоритма Евклида (9 класс). Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу: НОД(А, В, С) * НОД(НОД(А, В), С).
    • 1.4 3. Использование алгоритма Евклида (9 класс). Составьте программу нахождения наименьшего общего кратного (НОК) двух чисел, используя формулу: А * В = НОД(А, В)-НОК(А, В).

ОТВЕТЫ Решебник — ГДЗ Информатика — §16.Алгоритм Евклида, Семакин 9 класс

Вопросы и задания
1. Выполните на компьютере программу Evklid (из параграфа). Протестируйте ее на значениях М = 32, N = 24; М = 696, N = 234.

2. Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу:
НОД(А, В, С) * НОД(НОД(А, В), С).
3. Составьте программу нахождения наименьшего общего кратного (НОК) двух чисел, используя формулу:
А * В = НОД(А, В)-НОК(А, В).

Ответы на вопросы параграф 16 из учебника Семакина 9 класс

1. program Evkild;
var
a, b: integer;
begin
write(Введите a: );
readln(a);
write(Введите b: );
readln(b);
while (a 0) and (b 0) do
if a >= b then
a := a mod b
else
b := b mod a;
writeln(Наибольший общий делитель = , a + b);
readln;
end.

2. Использование алгоритма Евклида (9 класс). Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу: НОД(А, В, С) * НОД(НОД(А, В), С).

var
a, b, c:integer;
begin
write(a = ); readln(a);
write(b = ); readln(b);
write(c = ); readln(c);
write(НОД(, a, , , b, , , c, ) = );
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
a := a + b;
while (c <> 0) and (a <> 0) do
if a >= c then
a := a mod c
else
c := c mod a;
writeln(a + c);
end.

3. Использование алгоритма Евклида (9 класс). Составьте программу нахождения наименьшего общего кратного (НОК) двух чисел, используя формулу: А * В = НОД(А, В)-НОК(А, В).

uses crt;
var a,b,p : real;
nod,nok : real;
begin
clrscr;
write(‘a=’);readln(a);
write(‘b=’);readln(b);
p:=a*b;
while a<>b do
if a>b then a:=a-b
else b:=b-a;
nod:=a;
nok:=nod-p;
write(‘НОК:’,nok);
readln;
end

Литература:Учебник:Информатика, 9 класс. ФГОС Автор:И. Г. Семакин, Л. А. Залогова, С. В. Русаков, Л. В. Шестакова.

Did you find apk for android? You can find new Free Android Games and apps.

1. Выполните на компьютере программу Evklid (из параграфа). Протестируйте ее на значениях М = 32, N = 24; М = 696, N = 234.

Program Evklid(input, output);

var M, N, Ost: integer;

begin
writeln(‘Enter M:’);
readln(M);
writeln(‘Enter N:’);
readln(N);

while N <> 0 do
begin
Ost := M mod N;
M := N;
N := Ost;
end;

writeln(‘GCD: ‘, M);
end.

Результаты тестирования:

М = 32, N = 24:
Enter M:
32
Enter N:
24
GCD: 8

М = 696, N = 234:
Enter M:
696
Enter N:
234
GCD: 6

2. Составьте программу нахождения наибольшего общего делителя трех чисел, используя следующую формулу:
НОД(А, В, С) * НОД(НОД(А, В), С).

Program GCD(input, output);

var A, B, C, GCD1, GCD2: integer;

function gcd(a, b: integer): integer;
var ost: integer;
begin
while b <> 0 do
begin
ost := a mod b;
a := b;
b := ost;
end;
gcd := a;
end;

begin
writeln(‘Enter A:’);
readln(A);
writeln(‘Enter B:’);
readln(B);
writeln(‘Enter C:’);
readln(C);

GCD1 := gcd(A, B);
GCD2 := gcd(GCD1, C);

writeln(‘GCD: ‘, GCD2 * GCD1);
end.

3. Составьте программу нахождения наименьшего общего кратного (НОК) двух чисел, используя формулу:
А * В = НОД(А, В)-НОК(А, В).

Program LCM(input, output);

var A, B, GCD, LCM: integer;

function gcd(a, b: integer): integer;
var ost: integer;
begin
while b <> 0 do
begin
ost := a mod b;
a := b;
b := ost;
end;
gcd := a;
end;

begin
writeln(‘Enter A:’);
readln(A);
writeln(‘Enter B:’);
readln(B);

GCD := gcd(A, B);
LCM := (A * B) div GCD;

writeln(‘LCM: ‘, LCM);
end.

Добавить комментарий