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

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

24.11.2010, 19:07. Показов 7513. Ответов 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
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
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
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
31.05.2023, 18:18
Цитата Сообщение от Killan Посмотреть сообщение
Является ли число степенью другого числа
Число и степень целые?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6131 / 2826 / 1038
Регистрация: 01.06.2021
Сообщений: 10,306
31.05.2023, 18:47
Verevkin, если в условии не сказано, то значит это седенионы...
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,261
31.05.2023, 19:05
Цитата Сообщение от Royal_X Посмотреть сообщение
это седенионы...


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

Добавлено через 6 минут
по теме, если речь идёт о целых числах x^z=y, я бы разложил z в гауссово представление и там есть обобщение теоремы Эйлера на гауссовы числа, где можно найти все возможные комбинации оснований и степеней просто перемножая скобки
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6131 / 2826 / 1038
Регистрация: 01.06.2021
Сообщений: 10,306
31.05.2023, 20:18
Цитата Сообщение от abit Посмотреть сообщение
а вдруг седеонионы над полем гипервещественных или сюрреальных чисел, нужно уточнить
Мой пост намекал лишь на то, что если ТС не написал, о каких числах идет речь в условии, то нужно обратиться к здравому смыслу, а если возможных вариантов решения выходит несколько, то нужно выбрать самый простой. В данном случае, можно рассмотреть условие так, что там говорится о натуральных числах. А вот не решать задачу, пока ТС не отвечает, можно в случаях, когда без уточнения условия решение задачи в таком виде, в каком она есть, вообще невозможно.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru