/*
Вот условия:
1.Вычислить высоту треугольника, если известны его площадь и разница между основой и высотой.
2.Найти в первой тысяче натуральных чисел только те числа, которые являются простыми. вывести их на экран по одному в каждой строке.
3.Напишите программу, которая печатает в направлении роста все делители введенного числа.
4.Пользователь вводит два числа. Определить, делящееся ли одно число на второе без остатка. Если нет, предложить ближайшее целое, что удовлетворяет этому условию.
*/
/*
codeby.net
Autor: DarkKnight125
*/
#include <iostream>
using namespace std;
void main(void)
{
//1.Вычислить высоту треугольника, если известны его площадь и разница между основой и высотой.
setlocale(LC_ALL,"Russian");
cout<<"------------------------------------------------------"<<endl
<<"Вычисление высоты треугольника"<<endl
<<"(если известны площадь и разница основания и высоты)"<<endl
<<"------------------------------------------------------"<<endl<<endl;
double S;//Площадь
double dh; //Разница между основание и высотой
cout<<"Введите площадь S = ";
cin>>S;
cout<<"Введите разницу основания и высоты dh = ";
cin>>dh;
//т.к. прощадь треугольника равна S = 1/2 * a * h (где h - высота, а основание), то 2S = (h+dh)*h - для наших входных данных
//после преобразований получим квадратное уровнение типа h^2 +dh*h - 2S = 0;
double Des = dh*dh - (4*1*(-2*S)); //Дескрименант квадратного уровнения
double h = (-dh + sqrt(Des))/2; //В нашем примере будет 2 корня, но нам интересен только положительный
//Корень нашего уровнения и есть высота (h)
cout<<"Высота треугольника h = "<<h<<endl<<endl;
//2.Найти в первой тысяче натуральных чисел только те числа, которые являются простыми. вывести их на экран по одному в каждой строке.
cout<<"------------------------------------------------------"<<endl
<<"Найти в первой тысяче натуральных чисел только те числа, которые являются простыми."<<endl
<<"(вывести их на экран по одному в каждой строке)"<<endl
<<"------------------------------------------------------"<<endl<<endl;
for (int i=1; i<=1000; i++) //Обойдем все числа от 1 до 1000;
{
bool isSample = true; //Предположим что число простое
for (int j=i-1; j>1; j--) //Обойдем все числа от i-1 до 2
{
if (i%j == 0) //Если хоть раз встретилось число на которое i делится без остатко, то число не простое
{
isSample = false; //поставим флаг
break; //Выйдим из цикла заранее
}
}
if (isSample) cout<<"Число "<<i<<" простое"<<endl; //Если число все же простое выведим его на экран
}
cout<<endl;
//3.Напишите программу, которая печатает в направлении роста все делители введенного числа.
cout<<"------------------------------------------------------"<<endl
<<"Напечатать все делители числа"<<endl
<<"( в направлении роста)"<<endl
<<"------------------------------------------------------"<<endl<<endl;
int k;
cout<<"Введите исходное число k = ";
cin>>k; //Введем k
cout<<"Делители числа k :"<<endl;
for (int i=1; i<=k; i++) //Обойдем числа от 1 до k
{
if (k%i == 0) cout<<i<<" "; //если k делится на текущее число то выведим его на экран
}
cout<<endl;
//4.Пользователь вводит два числа. Определить, делящееся ли одно число на второе без остатка.
//Если нет, предложить ближайшее целое, что удовлетворяет этому условию.
cout<<"------------------------------------------------------"<<endl
<<"Определить, делящееся ли одно число на второе без остатка."<<endl
<<"(если нет, предложить ближайшее целое, что удовлетворяет этому условию)"<<endl
<<"------------------------------------------------------"<<endl<<endl;
int n1,n2; //Числа
cout<<"Введите первое числол n1 = ";
cin>>n1; //Ввод первого числа
cout<<"Введите второе числол n2 = ";
cin>>n2; //Ввод второго числа
if (n1%n2 == 0) //Проверим кратность первого на второе
cout<<"Числа делятся без остатка"<<endl; //Если делятся то все ок
else //Если не делятся, то
{
cout<<"Числа не делятся без остатка, ближайщий делитель : ";
for (int i=1; i<n2; i--) //Перебираем числа от 1 до n2-1
{
if (n1 % (n2-i) == 0) //Нам нужно найти ближайшее так что проверяем как n2-1
{
cout<<(n2-i);
break;
}
else if (n1 % (n2+i) == 0) //так и n2+1, как только первое будет найдено то выведим на экран и завершим цикл
{
cout<<(n2+i);
break;
}
}
}
}