C#

C# Поиск корня без Math

public static int Root(int a)
{
int num1 = 1;
while (num1 * num1 != a)
{
num1++;
}
return num1;
}

написал метод который узнает корень, смотрю коды на форуме и люди пишут коды с лютыми вычислениями, есть ли недостатки в моем методе? за исключением того что если корень не извлекается то цикл будет работать бесконечно
А у Вас за каким лешим функция извлечения корня возвращает целое значение ? Как с ней вычислить √2 ? Вот пример классической такой функции, в которой применяется древний метод нахождения квадратного корня любого неотрицательного числа:
 using System;     
namespace New_Project
{ public static class Program
{ public static double f(double a)
{ if (a == 0) return 0; double x = 1, xnew;
while (true) { xnew = (x + a / x) * 0.5;
if (xnew == x) return x; else x = xnew; } }
public static void Main()
{ double x; for (;;) { Console.Write("x: ");
x = Convert.ToDouble(Console.ReadLine()); if (x < 0) break;
Console.WriteLine("√x = " + f(x)); } } } }
ИВ
Иван Вован
66 572
Лучший ответ
А корень из нецелого числа как извлекать будешь?
Аitbai Ospanuli
Аitbai Ospanuli
98 075
Медленно работает. Лучше использовать метод половинного деления.
Патрик Кутузов)
Патрик Кутузов)
13 286
Женя Кутейко Почему медленно?
Ваш метод находит корень целого числа перебором и является достаточно простым. Его основной недостаток заключается в том, что он не работает с нецелыми числами, а также не очень эффективен для больших значений аргумента. В случае, когда корень не является целым числом, ваш метод будет работать бесконечно, что неэффективно и неудобно.

Если вам нужно работать с нецелыми числами, то вам нужно использовать другой подход, такой как метод Ньютона или метод бисекции. Они позволяют находить корень числа с высокой точностью, но требуют больше вычислительных ресурсов.

Также следует отметить, что в C# уже есть встроенная функция Math.Sqrt(), которая находит квадратный корень числа, поэтому нет необходимости писать свою функцию, если вы хотите просто найти корень числа.
Женя Кутейко про Sqrt знал, просто хотел сам реализовать
Для вычисления функций используют разложение в ряд. Например, Тейлора.
Но помни, что некоторые математические функции процессор может вычислять аппаратно, что будет значительно быстрее.
Сам Куч
Сам Куч
4 583