Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.





#include<iostream>

#include<iomanip>

#include <math.h>

#include <conio.h>

#include <windows.h>

using namespace std;

/* Определяем функцию, которая будет определять, можно ли представить число в виде суммы квадратов двух натуральных чисел. Поскольку должно выполняться равенство , будем проверять все возможные значения a в диапазоне
[1, и для каждого а будем вычислять b по формуле: . Поскольку b должно быть натуральным, округлим результат вычисления по формуле до ближайшего целого. Если в результате округления равенство нарушается, значит число нельзя представить в виде суммы квадратов двух натуральных чисел.

Аргументами функции являются: проверяемое число n и ссылки на a и b; a и b объявлены как ссылки, поскольку функция должна передать их найденные значения главной программе, которая выведет их на экран. Функция возвращает либо 0, либо 1. */

byte IsPossible(long n, long& a, long& b)

{

byte flag = 0;

for (a = 1; a < sqrt((double)(n)); a++)

{

b = long(sqrt((double)(n - a*a)) +.5);

if (n == a * a + b * b)

{

flag = 1; break;

}

}

return flag;

}

//=========================================================

/* Главная программа проверяет заданный диапазон и выводит найденные числа на экран */

int main()

{

//Настройки шрифтов и региональных стандартов

if(SetConsoleCP(1251)==0)

{

cerr<<"Fialed to set codepage!"<<endl;

}

if(SetConsoleOutputCP(1251)==0) //тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

long m, n;

long a, b;

cout<< "Задайте диапазон (два натуральных числа) \n";

cin >> m >> n;

byte flag=0;

// Проходим заданный диапазон [m,n] и проверяем число i:

for (long i = m; i <= n; i++)

if (IsPossible(i, a, b)) /* Если i удовлетворяет условию, выполняем нижеследующие действия: */

{

if (!flag) /* Если флажок равен 0, значит най­дено первое число, в этом случае выводим поясняющий текст: */

{

cout<< "Числа, которые можно представить ";

cout<< "в виде суммы квадратов двух натуральных чисел\n";

}

flag = 1; /* Делаем флажок равным 1, текст больше выводиться не будет */

cout<< i << " = " << a << "*" << a <<" + " << b << "*" << b << endl;

// Вывели результат типа 5 = 1*1 + 2*2

}

/* Здесь проверка заданного отрезка закончилась, если флажок остался равным 0, выводим сообщение: */

if (!flag) cout<< "На этом отрезке нет нужных чисел\n";

_getch();

return 0;

}







Date: 2016-08-30; view: 346; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию