Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/39: Рейтинг темы: голосов - 39, средняя оценка - 4.82
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52

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

24.11.2010, 19:07. Показов 7568. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна функция которая проверяет, является ли число степенью какого либо другого числа.
Ломаю голову, но пока не смог придумать как это сделать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2010, 19:07
Ответы с готовыми решениями:

Определить, является ли натуральное число степенью другого числа
Помогите написать программу используя while или do...while. : Составить программу для определения, является ли натуральное число к...

Помогите, ГОС экзамен! Является ли число степенью другого числа
Нужно написать программу определения является ли натуральное число степенью какого-либо натурального числа. Вообще нужно написать на...

Определите, является ли число степенью числа 2, и если является, то выведите значение этой степени
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени / С++ для...

25
 Аватар для RepoMen
13 / 2 / 0
Регистрация: 24.11.2010
Сообщений: 10
24.11.2010, 19:17
Цитата Сообщение от Killan Посмотреть сообщение
как это сделать
нужно перебирать число (К) от 1 и дальше и перебирать степень (О) до тех пор, пока число К в степени О меньше заданого
если К в степени О равно нашему числу, значит ответ положительный
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
24.11.2010, 19:26
Killan, вспоминайте математику. Есть такая замечательная функция под названием логарифм.
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.11.2010, 19:47  [ТС]
RepoMen
Мм... принцип понял, но мне кажется это слишком громоздко, а если число в несколько тысяч ?
Перебор затянется...
gooseim
В прошлом с математикой не дружил, стал её нормально понимать, только после того как увлекся программированием, но логарифм это для меня жуткое ругательство)
Если не сложно объясните принцип, или покажите пример.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.11.2010, 19:49
Цитата Сообщение от Killan Посмотреть сообщение
Нужна функция которая проверяет, является ли число степенью какого либо другого числа.
что нужно вывести в ответ (просто да или нет)
привели свое число и ответ
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.11.2010, 19:56  [ТС]
Нужно получить именно числа, которые при возведении в степень дадут искомое число.
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
24.11.2010, 20:05
x^y=z
log(x, z)=y
вот и вся математика

Добавлено через 3 минуты
x=z^(1/y)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.11.2010, 20:33
Цитата Сообщение от Killan Посмотреть сообщение
Нужно получить именно числа, которые при возведении в степень дадут искомое число.
Вы сами хотя бы поняли что сказали
а где пример
0
 Аватар для Killan
7 / 7 / 0
Регистрация: 28.09.2009
Сообщений: 52
24.11.2010, 20:35  [ТС]
Цитата Сообщение от gooseim Посмотреть сообщение
x^y=z
log(x, z)=y
вот и вся математика

Добавлено через 3 минуты
x=z^(1/y)
Как я понял, тут имея 2 значения можно найти третье.
Допустим, z==9.
Тогда уравнения выглядят так:
3^2=9
log(3, 9)=2
3=9^(1/2)

Но мне известно только одно число, допустим
49=x(7)^y(2) - [x и y мне не известны.]
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
24.11.2010, 20:40
Killan, тогда видимо только перебором. Я думал 2 числа известны.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
24.11.2010, 20:52
Перебирать тут надо только основание логарифма, а результат проверять на "целость". Если логарифм z по очередному основанию y равен x, и этот x целый - то x есть искомое основание степени, а основание логарифма y - показатель степени.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.11.2010, 21:18
Цитата Сообщение от Killan Посмотреть сообщение
49=x^y - [x и y мне не известны.]
C
1
2
3
4
5
6
7
8
9
10
11
12
 int a=49, f=0;
int w; //степень
for (int i=2; i<=sqrt(a); i++)  
{ w=0;
   if (a%i==0)
       while (a) {
         if (a%i!=0)
          break
       a/=i; w++;}
if (!a)
{ f=1; break; }  }
  // i^w=a
Добавлено через 19 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int a=4, i, f=0;
int w; //степень
for ( i=2; i<=sqrt(a); i++)
{ w=0;
   if (a%i==0)
       while (a!=1) {
         if (a%i!=0)
          break;
       a/=i; w++;}
if (a==1)
{ f=1; break; }  }
  // i^w=a
 
         if (f)
         printf ("%d - %d", i, w);
подкорректировал, но ты еще через отладчик доделай, у меня просто времени больше нет
1
0 / 0 / 0
Регистрация: 31.05.2023
Сообщений: 1
31.05.2023, 18:02
!!!Использовал scanf_s
выражение вида b^x=a. Сначала вводим a, потом b.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
 
int RIVERSIDE(int a, int b, int* power) {
    if (a == 0 && b == 0) {
        *power = 'any'; 
        return 1;
    }
 
    if (a == 1 && b == 0) {
        *power = 0; 
        return 1;
    }
 
    if (a == 1) {
        *power = 0; 
        return 1;
    }
 
    int temp = a;
    *power = 0; 
 
    while (temp != 1) {
        if (temp % b != 0) {
            *power = 0; 
            return 0;
        }
        temp /= b;
        (*power)++;
    }
 
    return 1; 
}
 
int main() {
    int a, b;
    int power; 
 
    printf("Enter number a: ");
    if (scanf_s("%d", &a) != 1) {
        printf("Input error for number a.\n");
        return 1;
    }
 
    printf("Enter number b: ");
    if (scanf_s("%d", &b) != 1) {
        printf("Input error for number b.\n");
        return 1;
    }
 
    int result = RIVERSIDE(a, b, &power);
 
    if (result == 1) {
        printf("%d is a power of number %d (power = %d).\n", a, b, power);
    }
    else if (result == 0) {
        printf("%d is not a power of number %d.\n", a, b);
    }
 
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,223
31.05.2023, 18:12
Цитата Сообщение от RIVERSIDE Посмотреть сообщение
выражение вида b^x=a. Сначала вводим a, потом b.
В задании не допускается "потом b". В задании вводится только a. b - неизвестно.

---

Цитата Сообщение от Killan Посмотреть сообщение
Нужна функция которая проверяет, является ли число степенью какого либо другого числа.
Задача решается путем разложения числа на простые делители. После чего вычисляется НОД всех степеней простых делителей. Этот НОД - это и есть искомая степень. Если он равен 1, то число не является степенью другого числа (или, другими словами, является первой степенью самого себя)

Например, число 498433531640625.

Разложение на простые делители дает 312*58*74. НОД(12, 8, 4) = 4. То есть число является четвертой степенью какого-то другого числа. Разделим показатели степеней в разложении на 4 и получим это другое число: 33*52*7 = 4725.

То есть 498433531640625 = 47254
0
Злостный нарушитель
 Аватар для Verevkin
10340 / 5758 / 1269
Регистрация: 12.03.2015
Сообщений: 26,593
31.05.2023, 18:18
Цитата Сообщение от Killan Посмотреть сообщение
Является ли число степенью другого числа
Число и степень целые?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6205 / 2902 / 1043
Регистрация: 01.06.2021
Сообщений: 10,697
31.05.2023, 18:47
Verevkin, если в условии не сказано, то значит это седенионы...
0
Злостный нарушитель
 Аватар для Verevkin
10340 / 5758 / 1269
Регистрация: 12.03.2015
Сообщений: 26,593
31.05.2023, 19:05
Цитата Сообщение от Royal_X Посмотреть сообщение
это седенионы...


Добавлено через 15 минут
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
То есть 498433531640625 = 47254
А квадрат где? 498433531640625 = 223256252.
0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,859
31.05.2023, 20:06
то значит это седенионы
а вдруг седеонионы над полем гипервещественных или сюрреальных чисел, нужно уточнить

Добавлено через 6 минут
по теме, если речь идёт о целых числах x^z=y, я бы разложил z в гауссово представление и там есть обобщение теоремы Эйлера на гауссовы числа, где можно найти все возможные комбинации оснований и степеней просто перемножая скобки
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6205 / 2902 / 1043
Регистрация: 01.06.2021
Сообщений: 10,697
31.05.2023, 20:18
Цитата Сообщение от abit Посмотреть сообщение
а вдруг седеонионы над полем гипервещественных или сюрреальных чисел, нужно уточнить
Мой пост намекал лишь на то, что если ТС не написал, о каких числах идет речь в условии, то нужно обратиться к здравому смыслу, а если возможных вариантов решения выходит несколько, то нужно выбрать самый простой. В данном случае, можно рассмотреть условие так, что там говорится о натуральных числах. А вот не решать задачу, пока ТС не отвечает, можно в случаях, когда без уточнения условия решение задачи в таком виде, в каком она есть, вообще невозможно.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,223
31.05.2023, 20:38
Цитата Сообщение от Verevkin Посмотреть сообщение
А квадрат где? 498433531640625 = 223256252.
Какая разница, где? Задача требует лишь ответа вида "да/нет". Это все.

Все остальное - лишь необязательные пояснительные иллюстрации. Понятно, что вышеупомянутый мною НОД даст максимально возможную степень. А все остальные степени, если вам вдруг приспичило их увидеть, легко получаются как уникальные делители этого НОД. В моем примере это будет 4 и 2.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2023, 20:38
Помогаю со студенческими работами здесь

Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени.

Функция определяющая является ли число степенью числа 5
Приветствую господа, буду очень благодарен если вы поможете мне решить одну задачу) Описать функцию IsPower5(K) логического типа,...

Определить, является ли натуральное число k степенью числа
2. Составить программу для определения, является ли натуральное число k степенью числаВнимательнее выбирайте раздел для размещения тем

Проверить, является ли вводимое число степенью числа 3
Помогите, в 22 строке выводит ошибку: &quot;Требуется while&quot;. Программа должна проверять вводимое число является ли оно степень числа 3 ...

Фунция, проверяющая, является ли число степенью числа 5
Описать функцию IsPower5(K) логического типа, возвращающую True, если целый параметр K (&gt; 0) является степенью числа 5, и False в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru