Я пытаюсь написать программу на C, которая, учитывая положительное целое число n (> 1), определяет, существуют ли числа x и r, так что n = x ^ r
Это то, что я делал до сих пор:
while (c>=d) {
double y = pow(sum, 1.0/d);
if (floor(y) == y) {
out = y;
break;
}
d++;
}
В вышеприведенной программе "c" - это максимальное значение для показателя степени (r), а "d" начнется с значения, равного 2. Y - значение, которое нужно проверить, и переменная«out» устанавливается для вывода этого значения позже.По сути, сценарий проверяет, существуют ли квадратные корни y: если нет, он пытается использовать квадратный куб и т. Д. Когда он его находит, он сохраняет значение y в «out», чтобы: y = out ^ d
Мой вопрос: есть ли более эффективный способ найти эти значения?Я нашел некоторую документацию в Интернете, но это намного сложнее, чем моя школьная алгебра.Как я могу реализовать это более эффективным способом?
Спасибо!