Как выяснить степенью какого числа является число
Перейти к содержимому

Как выяснить степенью какого числа является число

Степень числа: определения, обозначение, примеры

В рамках этого материала мы разберем, что такое степень числа. Помимо основных определений мы сформулируем, что такое степени с натуральными, целыми, рациональными и иррациональными показателями. Как всегда, все понятия будут проиллюстрированы примерами задач.

Степени с натуральными показателями: понятие квадрата и куба числа

Сначала сформулируем базовое определение степени с натуральным показателем. Для этого нам понадобится вспомнить основные правила умножения. Заранее уточним, что в качестве основания будем пока брать действительное число (обозначим его буквой a ), а в качестве показателя – натуральное (обозначим буквой n ).

Степени с натуральными показателями: понятие квадрата и куба числа

Например, если показатель степени равен 1 , а основание – a , то первая степень числа a записывается как a 1 . Учитывая, что a – это значение множителя, а 1 – число множителей, мы можем сделать вывод, что a 1 = a .

В целом можно сказать, что степень – это удобная форма записи большого количества равных множителей. Так, запись вида 8 · 8 · 8 · 8 можно сократить до 8 4 . Примерно так же произведение помогает нам избежать записи большого числа слагаемых ( 8 + 8 + 8 + 8 = 8 · 4 ) ; мы это уже разбирали в статье, посвященной умножению натуральных чисел.

Как же верно прочесть запись степени? Общепринятый вариант – « a в степени n ». Или можно сказать « n -ная степень a » либо « a n -ной степени». Если, скажем, в примере встретилась запись 8 12 , мы можем прочесть « 8 в 12 -й степени», « 8 в степени 12 » или « 12 -я степень 8 -ми».

Вторая и третья степени числа имеют свои устоявшиеся названия: квадрат и куб. Если мы видим вторую степень, например, числа 7 ( 7 2 ) , то мы можем сказать « 7 в квадрате» или «квадрат числа 7 ». Аналогично третья степень читается так: 5 3 – это «куб числа 5 » или « 5 в кубе». Впрочем, употреблять стандартную формулировку «во второй/третьей степени» тоже можно, это не будет ошибкой.

Что такое степени с целым показателем

Разберемся с понятием нулевой степени. Для этого мы используем подход, учитывающий свойство частного для степеней с равными основаниями. Оно формулируется так:

Равенство a m : a n = a m − n будет верно при условиях: m и n – натуральные числа, m < n , a ≠ 0 .

Последнее условие важно, поскольку позволяет избежать деления на ноль. Если значения m и n равны, то мы получим следующий результат: a n : a n = a n − n = a 0

Но при этом a n : a n = 1 — частное равных чисел a n и a . Выходит, что нулевая степень любого отличного от нуля числа равна единице.

Однако такое доказательство не подходит для нуля в нулевой степени. Для этого нам нужно другое свойство степеней – свойство произведений степеней с равными основаниями. Оно выглядит так: a m · a n = a m + n .

Если n у нас равен 0 , то a m · a 0 = a m (такое равенство также доказывает нам, что a 0 = 1 ). Но если а также равно нулю, наше равенство приобретает вид 0 m · 0 0 = 0 m , Оно будет верным при любом натуральном значении n , и неважно при этом, чему именно равно значение степени 0 0 , то есть оно может быть равно любому числу, и на верность равенства это не повлияет. Следовательно, запись вида 0 0 своего особенного смысла не имеет, и мы не будем ему его приписывать.

При желании легко проверить, что a 0 = 1 сходится со свойством степени ( a m ) n = a m · n при условии, что основание степени не равно нулю. Таким образом, степень любого отличного от нуля числа с нулевым показателем равна единице.

Разберем пример с конкретными числами: Так, 5 0 — единица, ( 33 , 3 ) 0 = 1 , — 4 5 9 0 = 1 , а значение 0 0 не определено.

После нулевой степени нам осталось разобраться, что из себя представляет степень отрицательная. Для этого нам понадобится то же свойство произведения степеней с равными основаниями, которое мы уже использовали выше: a m · a n = a m + n .

Введем условие: m = − n , тогда a не должно быть равно нулю. Из этого следует, что a − n · a n = a − n + n = a 0 = 1 . Выходит, что a n и a − n у нас являются взаимно обратными числами.

В итоге a в целой отрицательной степени есть не что иное, как дробь 1 a n .

Такая формулировка подтверждает, что для степени с целым отрицательным показателем действительны все те же свойства, которыми обладает степень с натуральным показателем (при условии, что основание не равно нулю).

Степень a с целым отрицательным показателем n можно представить в виде дроби 1 a n . Таким образом, a — n = 1 a n при условии a ≠ 0 и n – любое натуральное число.

Проиллюстрируем нашу мысль конкретными примерами:

3 — 2 = 1 3 2 , ( — 4 . 2 ) — 5 = 1 ( — 4 . 2 ) 5 , 11 37 — 1 = 1 11 37 1

В последней части параграфа попробуем изобразить все сказанное наглядно в одной формуле:

Степень числа a с натуральным показателем z ​​ – это: a z = a z , e с л и z — ц е л о е п о л о ж и т е л ь н о е ч и с л о 1 , z = 0 и a ≠ 0 , ( п р и z = 0 и a = 0 п о л у ч а е т с я 0 0 , з н а ч е н и я в ы р а ж е н и я 0 0 н е о п р е д е л я е т с я ) 1 a z , е с л и z — ц е л о е о т р и ц а т е л ь н о е ч и с л о и a ≠ 0 ( е с л и z — ц е л о е о т р и ц а т е л ь н о е ч и с л о и a = 0 п о л у ч а е т с я 0 z , е г о з н а ч е н и е н е о п р е д е л я е т с я )

Что такое степени с рациональным показателем

Мы разобрали случаи, когда в показателе степени стоит целое число. Однако возвести число в степень можно и тогда, когда в ее показателе стоит дробное число. Это называется степенью с рациональным показателем. В этом пункте мы докажем, что она обладает теми же свойствами, что и другие степени.

Что такое рациональные числа? В их множество входят как целые, так и дробные числа, при этом дробные числа можно представить в виде обыкновенных дробей (как положительных, так и отрицательных). Сформулируем определение степени числа a с дробным показателем m / n , где n – натуральное число, а m – целое.

У нас есть некоторая степень с дробным показателем a m n . Для того, чтобы свойство степени в степени выполнялось, равенство a m n n = a m n · n = a m должно быть верным.

Учитывая определение корня n -ной степени и что a m n n = a m , мы можем принять условие a m n = a m n , если a m n имеет смысл при данных значениях m , n и a .

Приведенные выше свойства степени с целым показателем будут верными при условии a m n = a m n .

Основной вывод из наших рассуждений таков: степень некоторого числа a с дробным показателем m / n – это корень n -ой степени из числа a в степени m . Это справедливо в том случае, если при данных значениях m , n и a выражение a m n сохраняет смысл.

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

1. Мы можем ограничить значение основания степени: возьмем a , которое при положительных значениях m будет больше или равно 0 , а для отрицательных – строго меньше (поскольку при m ≤ 0 мы получаем 0 m , а такая степень не определена). В таком случае определение степени с дробным показателем будет выглядеть следующим образом:

Степень с дробным показателем m / n для некоторого положительного числа a есть корень n -ной степени из a, возведенного в степень m . В виде формулы это можно изобразить так:

Для степени с нулевым основанием это положение также подходит, но только в том случае, если ее показатель – положительное число.

Степень с нулевым основанием и дробным положительным показателем m / n можно выразить как

0 m n = 0 m n = 0 при условии целого положительного m и натурального n .

Отметим один момент. Поскольку мы ввели условие, что a больше или равно нулю, то у нас оказались отброшены некоторые случаи.

Выражение a m n иногда все же имеет смысл при некоторых отрицательных значениях a и некоторых m . Так, верны записи ( — 5 ) 2 3 , ( — 1 , 2 ) 5 7 , — 1 2 — 8 4 , в которых основание отрицательно.

2. Второй подход – это рассмотреть отдельно корень a m n с четными и нечетными показателями. Тогда нам потребуется ввести еще одно условие: степень a , в показателе которой стоит сократимая обыкновенная дробь, считается степенью a , в показателе которой стоит соответствующая ей несократимая дробь. Позже мы объясним, для чего нам это условие и почему оно так важно. Таким образом, если у нас есть запись a m · k n · k , то мы можем свести ее к a m n и упростить расчеты.

Если n – нечетное число, а значение m – положительно, a – любое неотрицательное число, то a m n имеет смысл. Условие неотрицательного a нужно, поскольку корень четной степени из отрицательного числа не извлекают. Если же значение m положительно, то a может быть и отрицательным, и нулевым, т.к. корень нечетной степени можно извлечь из любого действительного числа.

Объединим все данные выше определения в одной записи:

Здесь m/n означает несократимую дробь, m – любое целое число, а n – любое натуральное число.

Для любой обыкновенной сократимой дроби m · k n · k степень можно заменить на a m n .

Степень числа a с несократимым дробным показателем m / n – можно выразить в виде a m n в следующих случаях: — для любых действительных a , целых положительных значений m и нечетных натуральных значений n . Пример: 2 5 3 = 2 5 3 , ( — 5 , 1 ) 2 7 = ( — 5 , 1 ) — 2 7 , 0 5 19 = 0 5 19 .

— для любых отличных от нуля действительных a , целых отрицательных значений m и нечетных значений n , например, 2 — 5 3 = 2 — 5 3 , ( — 5 , 1 ) — 2 7 = ( — 5 , 1 ) — 2 7

— для любых неотрицательных a , целых положительных значений m и четных n , например, 2 1 4 = 2 1 4 , ( 5 , 1 ) 3 2 = ( 5 , 1 ) 3 , 0 7 18 = 0 7 18 .

— для любых положительных a , целых отрицательных m и четных n , например, 2 — 1 4 = 2 — 1 4 , ( 5 , 1 ) — 3 2 = ( 5 , 1 ) — 3 , .

В случае других значений степень с дробным показателем не определяется. Примеры таких степеней: — 2 11 6 , — 2 1 2 3 2 , 0 — 2 5 .

Теперь объясним важность условия, о котором говорили выше: зачем заменять дробь с сократимым показателем на дробь с несократимым. Если бы мы этого не сделали бы, то получились бы такие ситуации, скажем, 6 / 10 = 3 / 5 . Тогда должно быть верным ( — 1 ) 6 10 = — 1 3 5 , но — 1 6 10 = ( — 1 ) 6 10 = 1 10 = 1 10 10 = 1 , а ( — 1 ) 3 5 = ( — 1 ) 3 5 = — 1 5 = — 1 5 5 = — 1 .

Определение степени с дробным показателем, которое мы привели первым, удобнее применять на практике, чем второе, поэтому мы будем далее пользоваться именно им.

Таким образом, степень положительного числа a с дробным показателем m / n определяется как 0 m n = 0 m n = 0 . В случае отрицательных a запись a m n не имеет смысла. Степень нуля для положительных дробных показателей m / n определяется как 0 m n = 0 m n = 0 , для отрицательных дробных показателей мы степень нуля не определяем.

В выводах отметим, что можно записать любой дробный показатель как в виде смешанного числа, так и в виде десятичной дроби: 5 1 , 7 , 3 2 5 — 2 3 7 .

При вычислении же лучше заменять показатель степени обыкновенной дробью и далее пользоваться определением степени с дробным показателем. Для примеров выше у нас получится:

5 1 , 7 = 5 17 10 = 5 7 10 3 2 5 — 2 3 7 = 3 2 5 — 17 7 = 3 2 5 — 17 7

Что такое степени с иррациональным и действительным показателем

Что такое действительные числа? В их множество входят как рациональные, так и иррациональные числа. Поэтому для того, чтобы понять, что такое степень с действительным показателем, нам надо определить степени с рациональными и иррациональными показателями. Про рациональные мы уже упоминали выше. Разберемся с иррациональными показателями пошагово.

Допустим, что у нас есть иррациональное число a и последовательность его десятичных приближений a 0 , a 1 , a 2 , . . . . Например, возьмем значение a = 1 , 67175331 . . . , тогда

a 0 = 1 , 6 , a 1 = 1 , 67 , a 2 = 1 , 671 , . . . , a 0 = 1 , 67 , a 1 = 1 , 6717 , a 2 = 1 , 671753 , . . .

и так далее (при этом сами приближения являются рациональными числами).

Последовательности приближений мы можем поставить в соответствие последовательность степеней a a 0 , a a 1 , a a 2 , . . . . Если вспомнить, что мы рассказывали ранее о возведении чисел в рациональную степень, то мы можем сами подсчитать значения этих степеней.

Возьмем для примера a = 3 , тогда a a 0 = 3 1 , 67 , a a 1 = 3 1 , 6717 , a a 2 = 3 1 , 671753 , . . . и т.д.

Последовательность степеней можно свести к числу, которое и будет значением степени c основанием a и иррациональным показателем a . В итоге : степень с иррациональным показателем вида 3 1 , 67175331 . . можно свести к числу 6 , 27 .

Степень положительного числа a с иррациональным показателем a записывается как a a . Его значение – это предел последовательности a a 0 , a a 1 , a a 2 , . . . , где a 0 , a 1 , a 2 , . . . являются последовательными десятичными приближениями иррационального числа a . Степень с нулевым основанием можно определить и для положительных иррациональных показателей, при этом 0 a = 0 Так, 0 6 = 0 , 0 21 3 3 = 0 . А для отрицательных этого сделать нельзя, поскольку, например, значение 0 — 5 , 0 — 2 π не определено. Единица, возведенная в любую иррациональную степень, остается единицей, например, и 1 2 , 1 5 в 2 и 1 — 5 будут равны 1 .

Проверить, является ли число степенью 4 или нет

Учитывая положительное число, проверьте, является ли оно степенью четырех или нет.

Подход 1

Простое решение состоит в том, чтобы вычислить log4n на заданный номер n . Если он возвращает целочисленное значение, то мы можем сказать, что число является степенью числа четыре.

Этот подход демонстрируется ниже на C++, Java и Python:

C++

using namespace std ;
// Возвращает true, если `n` является степенью числа четыре
bool checkPowerOf4 ( unsigned n )
// найти `log4(n)`
double i = log ( n ) / log ( 4 ) ;
// вернуть true, если `log4(n)` является целым числом
return i == trunc ( i ) ;
unsigned n = 256 ;
if ( checkPowerOf4 ( n ) ) < cout << n << " is a power of 4" ; cout << n << " is not a power of 4" ;

результат:

256 is a power of 4

Java

class Main
// Возвращает true, если `n` является степенью числа четыре
public static boolean checkPowerOf4 ( int n )
// найти `log4(n)`
double i = Math . log ( n ) / Math . log ( 4 ) ;
// вернуть true, если `log4(n)` является целым числом
return i == Math . floor ( i ) ;
public static void main ( String [ ] args )
int n = 256 ;
if ( checkPowerOf4 ( n ) ) < System . out . println ( n + " is a power of 4" ) ; System . out . println ( n + " is not a power of 4" ) ;

результат:

256 is a power of 4

Python

from math import log , floor
# Возвращает истину, если `n` является степенью числа четыре.
def checkPowerOf4 ( n ) :
# найти `log4(n)`
i = log ( n ) / log ( 4 )
# возвращает true, если `log4(n)` является целым числом
return i == floor ( i )
if __name__ == ‘__main__’ :
if checkPowerOf4 ( n ) :
print ( n , ‘is a power of 4’ )
print ( n , ‘is not a power of 4’ )

результат:

256 is a power of 4

Подход 2

Данный номер n является степенью числа 4, если это степень числа 2, и его единственный установленный бит присутствует в четной позиции (0, 2, 4, …) .

Как проверить степень двойки?

Мы также можем выражение (n & -n) == n чтобы проверить, является ли положительное целое число степенью 2 или нет. Для получения более подробной информации см. эта почта.

Как проверить положение установленного бита?

Чтобы проверить позицию установленного бита, мы можем использовать 0xAAAAAAAA как маска. Маска 0xAAAAAAAA имеет 1 во всех своих нечетных позициях. Итак, если выражение !(n & 0xAAAAAAAA) верно, позиция установленного бита в n даже.

(0xAAAAAAAA)16 = (10101010101010101010101010101010)2

Ниже приведена программа на C++, Java и Python, которая демонстрирует это:

Как выяснить степенью какого числа является число

Как определить, является ли число степенью другого?
т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )

Re: определить является ли число степенью

От: MBo
Дата: 15.11.06 11:27
Оценка: +1 -1

Здравствуйте, Amouse, Вы писали:

A>Как определить, является ли число степенью другого?
A>т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )

ну наверно, все же 125 является степенью пятерки.

1 способ. Если большое на малое делится нацело несколько раз, пока не получится единица
2 способ Перевести большое число в систему счисления с основанием малое число, и проверить, что получилось «1000. «

Re[2]: определить является ли число степенью

От: Nirel
Дата: 15.11.06 11:49
Оценка:

Здравствуйте, MBo, Вы писали:

MBo>Здравствуйте, Amouse, Вы писали:

A>>Как определить, является ли число степенью другого?
A>>т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )

MBo>ну наверно, все же 125 является степенью пятерки.

MBo>1 способ. Если большое на малое делится нацело несколько раз, пока не получится единица
MBo>2 способ Перевести большое число в систему счисления с основанием малое число, и проверить, что получилось «1000. «

Алгоритм номер 2. Как его можно применить, скажем к задаче: 17^17 ?
Или если формулировать вопрос как автор ветки, является ли число 8272[многоцифер]177 степенью числа 17 ?

Re: определить является ли число степенью

От: Кодт
Дата: 15.11.06 12:00
Оценка: 1 (1)

Здравствуйте, Amouse, Вы писали:

A>Как определить, является ли число степенью другого?
A>т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )

Любое число является степенью любого другого (за исключением особых случаев: 0, 1, отрицательные)
Нужно установить: является ли данное число целой степенью. Для этого есть логарифмы.

x = p^n
n = log(x)/log(p)
Осталось только проверить, целое ли число n.

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

С другой стороны, можно чисто в целых числах сделать. Ведь даже log(MAXINT)/log(2) (худший случай, так сказать) равен 32 или 64. Поэтому тупой линейный перебор степеней — p^1, p^2, . не продлится слишком долго.

Перекуём баги на фичи!
Re: определить является ли число степенью

От: Nikolaus
Дата: 15.11.06 12:40
Оценка:

Здравствуйте, Amouse, Вы писали:

A>Как определить, является ли число степенью другого?
A>т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )
Так тривиально
Делить 125 на 5, пока можем или пока не получим 1.

Указал бы размерность задачи и ограничения.

Re[2]: определить является ли число степенью

От: Кодт
Дата: 15.11.06 13:24
Оценка: 1 (1)

Здравствуйте, MBo, Вы писали:

MBo>1 способ. Если большое на малое делится нацело несколько раз, пока не получится единица
MBo>2 способ Перевести большое число в систему счисления с основанием малое число, и проверить, что получилось «1000. «

Способ номер два всё равно реализуется через способ номер один, только с избыточностью.

Перекуём баги на фичи!
Re: определить является ли число степенью

От: Nuzhny https://github.com/Nuzhny007
Дата: 15.11.06 13:29
Оценка: +1

Что-то все: «делить, делить. «. Целые делить так нельзя. А с нецелыми — погрешность.
Умножать меньшее число a само на себя. Если a > b — не является степенью, если a = b — является.

Re[2]: определить является ли число степенью

От: Amouse
Дата: 15.11.06 13:32
Оценка:

Здравствуйте, Nikolaus, Вы писали:

N>Так тривиально
N>Делить 125 на 5, пока можем или пока не получим 1.

ну это обратное от простого перебора которое Кодт указал,
я думал может есть что похитрее .
А размерность — int.

В принципе с log()/log() наверное универсальней всего, только там действительно погрешность надо будет убирать.

Re[3]: определить является ли число степенью

От: FDSC consp11.github.io блог
Дата: 15.11.06 13:32
Оценка: +1

Здравствуйте, Nirel, Вы писали:

N>Алгоритм номер 2. Как его можно применить, скажем к задаче: 17^17 ?
N>Или если формулировать вопрос как автор ветки, является ли число 8272[многоцифер]177 степенью числа 17 ?

А в чём проблема. Переведёшь 8272[многоцифер]177 в 17-ричную систему исчисления и получится у тебя 100000000000000000 — всё полный нормал.

Re[2]: определить является ли число степенью

От: FDSC consp11.github.io блог
Дата: 15.11.06 13:35
Оценка:

Здравствуйте, Nuzhny, Вы писали:

N>Что-то все: «делить, делить. «. Целые делить так нельзя. А с нецелыми — погрешность.

Почему нельзя. Можно. В eax — результат, в edx — остаток. Если остаток ненулевой -прекращаем. Если eax = 1 и edx = 0 — то проверяемое число есть степень.

N>Умножать меньшее число a само на себя. Если a > b — не является степенью, если a = b — является.

Этот способ быстрее.

Re[3]: определить является ли число степенью

От: Nuzhny https://github.com/Nuzhny007
Дата: 15.11.06 14:17
Оценка:

Хотя нет. Умножения чреваты переполнением. И в любом случае понадобится их выполнять минимум b/a раз.

Re[4]: определить является ли число степенью

От: Nuzhny https://github.com/Nuzhny007
Дата: 15.11.06 14:19
Оценка:

Здравствуйте, Nuzhny, Вы писали:

N>Хотя нет. Умножения чреваты переполнением. И в любом случае понадобится их выполнять минимум b/a раз.
Последнее предложение — полная чушь. Прошу прощения — написал не подумав.

Re[5]: определить является ли число степенью

От: Amouse
Дата: 15.11.06 14:46
Оценка:

Здравствуйте, Nuzhny, Вы писали:

N>>Хотя нет. Умножения чреваты переполнением. И в любом случае понадобится их выполнять минимум b/a раз.
N>Последнее предложение — полная чушь. Прошу прощения — написал не подумав.

переполнение не чушь, геморойно довольно отслеживать.

Re[6]: определить является ли число степенью

От: FDSC consp11.github.io блог
Дата: 15.11.06 15:23
Оценка:

Здравствуйте, Amouse, Вы писали:

A>Здравствуйте, Nuzhny, Вы писали:

N>>>Хотя нет. Умножения чреваты переполнением. И в любом случае понадобится их выполнять минимум b/a раз.
N>>Последнее предложение — полная чушь. Прошу прощения — написал не подумав.

A>переполнение не чушь, геморойно довольно отслеживать.

Почему? На asm нормально. а на нормальном языке. извращение, да, согласен.

Re[7]: определить является ли число степенью

От: Кодт
Дата: 15.11.06 15:55
Оценка:

Здравствуйте, FDSC, Вы писали:

A>>переполнение не чушь, геморойно довольно отслеживать.

FDS>Почему? На asm нормально. а на нормальном языке. извращение, да, согласен.

Да ну, бросьте. Никаких извращений.

int p, x; int one_step_to_overflow = MAXINT/p; // для эстетов-сиплюсплюсников: вместо MAXINT - (std::numeric_limits::max) int limit = min(x, one_step_to_overflow); int power = p; while(power < limit) power *= p; // пока power < limit return power == x;

Перекуём баги на фичи!
Re: определить является ли число степенью

От: StatujaLeha на правах ИМХО
Дата: 16.11.06 14:01
Оценка:

Здравствуйте, Amouse, Вы писали:

A>Как определить, является ли число степенью другого?
A>т.е скажем, узнать для числа «5» является ли оно степенью «125». В данном случае это будет верно (т.к — 5, 25, 125. )

Разложить число на простые множители, т.е. n = p1^a1 * p2^a2 * . * pn^an.
Если НОД(a1, a2, . an) = d > 1, то число n = b^d, b = p1^(a1/d) * p2^(a2/d) * . * pn^(an/d).

Re[8]: определить является ли число степенью

От: FDSC consp11.github.io блог
Дата: 16.11.06 17:22
Оценка:

Здравствуйте, Кодт, Вы писали:

К>Да ну, бросьте. Никаких извращений.
К>

К>int p, x; К>int one_step_to_overflow = MAXINT/p; // для эстетов-сиплюсплюсников: вместо MAXINT - (std::numeric_limits::max) К>int limit = min(x, one_step_to_overflow); К>int power = p; К>while(power < limit) power *= p; // пока power < limit К>return power == x; К>

Верно, почему-то я подумал, что вычилять limit нужно в цикле

Re[8]: определить является ли число степенью

От: Nuzhny https://github.com/Nuzhny007
Дата: 17.11.06 06:27
Оценка: 1 (1)

Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, FDSC, Вы писали:

A>>>переполнение не чушь, геморойно довольно отслеживать.

FDS>>Почему? На asm нормально. а на нормальном языке. извращение, да, согласен.

К>Да ну, бросьте. Никаких извращений.
К>

К>int p, x; К>int one_step_to_overflow = MAXINT/p; // для эстетов-сиплюсплюсников: вместо MAXINT - (std::numeric_limits::max) К>int limit = min(x, one_step_to_overflow); К>int power = p; К>while(power < limit) power *= p; // пока power < limit К>return power == x; К>

Интересно, а будет ли цикл бесконечным , если power == 1?

Re[9]: определить является ли число степенью

От: Кодт
Дата: 17.11.06 10:21
Оценка:

Здравствуйте, Nuzhny, Вы писали:

N>Интересно, а будет ли цикл бесконечным , если power == 1?

Особые случаи следует обрабатывать до того.
— аргументы равны 0 или ±1 — сразу давать ответ
— положительное p и отрицательное x — сразу отказать
— отрицательное p — найти порядок n : |x|=|p|^n и затем проверить знак x с чётностью n

Перекуём баги на фичи!
Re[2]: определить является ли число степенью

От: Андрей Тарасевич
Дата: 18.11.06 01:47
Оценка:

Здравствуйте, Nuzhny, Вы писали:

N>Что-то все: «делить, делить. «. Целые делить так нельзя. А с нецелыми — погрешность.
N>Умножать меньшее число a само на себя. Если a > b — не является степенью, если a = b — является.

Тут сразу напрашивается алгоритм типа ‘Russian peasant’. Т.е. растить степень ‘a’ не линейно, а квадратично. Вот, например (без проверки переполнений и особых ситуаций)

bool is_power(unsigned a, unsigned b) < assert(a >1); while (a unsigned p = a; do < unsigned p2 = p * p; if (p2 > b) break; p = p2; > while (true); if (b % p != 0) break; b /= p; > return b == 1; >

Определить, является ли число степенью любого натурального числа

Степень числа
Дано натуральное число, большее 1. Определить, является ли оно степенью любого натурального числа. Считается, что показатель степени больше 1.
Формат входных данных
Вы вводите количество контрольных примеров N, затем через пробел N (N≤10000) чисел, каждое из которых не превышает 1000000000.
Формат результата
Ви виводите 1, если число является степенем та 0 в другом случае.

Входные данные
3 4 5 27
Результат работы
101

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

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

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

Алгоритм определения является ли натуральное число степенью какого-либо натурального числа
Помогите на гос.экзамене. Т.е. Вводится одно натуральное число, а выводом должно быть — число.

Эксперт функциональных языков программированияЭксперт Python

35367 / 19966 / 4181
Регистрация: 12.02.2012
Сообщений: 33,130
Записей в блоге: 13

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
def is_power_of(n): if n==1: return 1 i=2 while(i*in): if n%i==0: k=n//i while(k>1): if k%i==0: k=k//i else: break if k==1: return 1 i+=1 return 0 def task(): n=int(input()) lst=map(int,input().split(" ")) print(*list(map(is_power_of,lst))) task()

Status 418

Эксперт Python

4527 / 2297 / 597
Регистрация: 26.11.2017
Сообщений: 5,224
Записей в блоге: 3
Catstail, «вангую» по времени не пройдет

Эксперт функциональных языков программированияЭксперт Python

35367 / 19966 / 4181
Регистрация: 12.02.2012
Сообщений: 33,130
Записей в блоге: 13
eaa, да, алгоритм небыстрый
Status 418

Эксперт Python

4527 / 2297 / 597
Регистрация: 26.11.2017
Сообщений: 5,224
Записей в блоге: 3
степени могут быть от 2 до 29. достаточно их перебрать чтобы определить is_power_of.
702 / 348 / 104
Регистрация: 09.02.2018
Сообщений: 789

1 2 3 4 5
def is_power_between2_29(n): for i in range(2, 30): if int(n ** (1 / i)) ** i == n: return True return False

Эксперт Python

7283 / 4105 / 1795
Регистрация: 27.03.2020
Сообщений: 6,929
КулХацкеръ, только range(2, 34)
702 / 348 / 104
Регистрация: 09.02.2018
Сообщений: 789

Gdez, почему?

>>> int(math.log2(1000000000)) + 1
30

Status 418

Эксперт Python

4527 / 2297 / 597
Регистрация: 26.11.2017
Сообщений: 5,224
Записей в блоге: 3
можно так, если по времени пройдет. и хватит ли точности у float.

Эксперт Python

7283 / 4105 / 1795
Регистрация: 27.03.2020
Сообщений: 6,929

КулХацкеръ, 10^10 насчитал

Добавлено через 35 секунд
Если 9, то верно

Эксперт функциональных языков программированияЭксперт Python

35367 / 19966 / 4181
Регистрация: 12.02.2012
Сообщений: 33,130
Записей в блоге: 13

Лучший ответ

Сообщение было отмечено SashaBrine как решение

Решение

Еще один алгоритм определения степени:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
def isPower(n): k=2 d={} while(n>1): if n%k==0: if d.get(k)==None: d[k]=1 else: d[k]+=1 n=n//k; else: k+=1 t=min(d.values()) for a in d.values(): if a%t !=0: return False return True

Status 418

Эксперт Python

4527 / 2297 / 597
Регистрация: 26.11.2017
Сообщений: 5,224
Записей в блоге: 3
корень бы я вычислял бин.поиском и сразу же целочисленный.
Регистрация: 05.11.2019
Сообщений: 33
Catstail спасибо
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Найти и вывести первое число большее n (вводится), которое является степенью натурального числа 2.9
Найти и вывести первое число большее n (вводится), которое является степенью натурального числа.

Определить, является ли число N степенью числа 3
Доброго времени суток. Я начинающий программист) В общем задача такая составить программу: .

Определить, является ли число Х степенью числа 2
Является ли число Х степенью числа 2(ЙЕС или НОУ)? Например числа 8,2,32- Являются, а 5,7,6-нет.

Определить: является ли заданное число степенью числа 3
Определить: является ли заданное число степенью числа 3

Определить является ли заданное число степенью числа 5
первая задача 1. Даны последовательность вещественных чисел a1,a2,…,a15, упорядоченная по.

Определить, является ли натуральное число N степенью числа 3
здравствуйте! Помогите, пожалуйста. Задание в windows forms, не понимаю в чем моя ошибка. .

Определить, является ли число степенью другого числа
Составить подпрограмму, определяющую , является ли число степенью другого числа.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *