Другие языки программирования и технологии
Помогите пожалуйста!!! )) Очень нучно ) Обьясните как решать С++
Сокращение дроби: Даны натуральные числа m и n. Найти такие два натуральных числа p и q, которые не имеют общих делителей и удовлетворяют условию p/q=m/n.
У меня déjà vu
// Visual C++ 2010 console application
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int p = 1, q = 1, n, m, max, min, temp;
double x = 1, y = 1;
do
{
system("cls");
cout << endl << " m = ";
cin >> m;
cout << " n = ";
cin >> n;
if (m == n)
{
cout << endl << " Нет решений, числа n и m равны! ";
fflush(stdin);
cin.get();
}
}
while (m == n);
max = n;
if (max < m) {max = m; min = n;}
else min = m;
x = (double) min / max;
temp = max;
do
{
for (min; min > 0; min--)
{
if (y < x) continue;
for (max; max > 1; max--)
{
y = (double) min / max;
if (y < x) continue;
if (x == y)
{
p = min; q = max;
for (int k = p; k > 0; k--)
{
if (p % k == 0 && q % k == 0 && k > 1) break;
else
{
cout << endl << " p = " << p << "\n q = " << q;
fflush(stdin);
cin.get();
return 0;
}
}
}
}
max = temp;
}
cout << endl << " Нет решений! ";
fflush(stdin);
cin.get();
break;
}
while (true);
return 0;
}
// Visual C++ 2010 console application
#include <iostream>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int p = 1, q = 1, n, m, max, min, temp;
double x = 1, y = 1;
do
{
system("cls");
cout << endl << " m = ";
cin >> m;
cout << " n = ";
cin >> n;
if (m == n)
{
cout << endl << " Нет решений, числа n и m равны! ";
fflush(stdin);
cin.get();
}
}
while (m == n);
max = n;
if (max < m) {max = m; min = n;}
else min = m;
x = (double) min / max;
temp = max;
do
{
for (min; min > 0; min--)
{
if (y < x) continue;
for (max; max > 1; max--)
{
y = (double) min / max;
if (y < x) continue;
if (x == y)
{
p = min; q = max;
for (int k = p; k > 0; k--)
{
if (p % k == 0 && q % k == 0 && k > 1) break;
else
{
cout << endl << " p = " << p << "\n q = " << q;
fflush(stdin);
cin.get();
return 0;
}
}
}
}
max = temp;
}
cout << endl << " Нет решений! ";
fflush(stdin);
cin.get();
break;
}
while (true);
return 0;
}
Ответил в прошлом вопросе. Николай, не кури больше эту траву.. . ;)
ну я бы нашел все делители для m и для n (решетом Эратосфена, например)
затем делил бы m и n на их общие делители, пока общие делители не закончились бы.
И получил бы таким образом p и q
Или программа нужна?
затем делил бы m и n на их общие делители, пока общие делители не закончились бы.
И получил бы таким образом p и q
Или программа нужна?
Похожие вопросы
- Вы будете долго смеяться, но помогите пожалуйста! Очень забавная ситуация, но мне нужна помощь.
- Помогите, пожалуйста! ОЧЕНЬ срочно! Заблокирован компьютер!
- Есть ли у матриц A и B одинаковые строки? помогите пожалуйста! очень надо! в VBA
- помогите, пожалуйста!!!!очень надо!!!!
- Помогите пожалуйста, очень нужно....
- «Помогите пожалуйста! Очень надо!! ! Нужно написать на языке Си (именно на СИ) . Заранее СПАСИБО!!!»
- помогите, пожалуйста, очень срочно нужно как отсортировать число 1079011205 методом пузырька ???
- помогите пожалуйста очень срочно надо ((( на языке C++
- Помогите пожалуйста, очень срочно нужно решить задачу по информатике. Сама не понимаю, есть ли вообще решение.
- Задача в паскале. помогите пожалуйста... очень срочно нужно!