Форум программистов, компьютерный форум CyberForum.ru

отбрасывание - C++

Восстановить пароль Регистрация
 
studentka11
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 23
09.10.2011, 22:03     отбрасывание #1
программа должна отбрасывать от числа,записанного в пятеричной системе,первые цифры до тех пор пока
число не станет совершенным.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 22:03     отбрасывание
Посмотрите здесь:

Отбрасывание части текста C++ Builder
Отбрасывание незначащих нулей C++
Отбрасывание дробной части C# .NET 4.x
Visual Basic 2013 сложение чисел, округление до 2 знаков после запятой, отбрасывание знаков VBA

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 22:33     отбрасывание #2
Напомните определение совершенности. Если посмотреть википедию, то там написано
"Совершенное число́ — натуральное число, равное сумме всех своих собственных делителей (т. е. всех положительных делителей, отличных от самого́ числа).Первое совершенное число — 6 (1 + 2 + 3 = 6), следующее — 28 (1 + 2 + 4 + 7 + 14 = 28)."

Но по определению число 1 является собственным делителем, противоречие... Хотя это у меня ассоциация из теории групп, колец, алгебр, там, например, единичные элементы в группах образуют несобственные подгруппы. Но 1 - единичный элемент мультипликативной группы действительных чисел (без нуля) И опять это несобственная подгруппа.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 22:43     отбрасывание #3
Thinker, нужны делители, отличные от самого числа. Поскольку у 1 нет делителей, отличных от 1, то и сумма несуществующих делителей не равна самому числу. Как-то так. Или вы не об этом?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 22:44     отбрасывание #4
Цитата Сообщение от aeshes Посмотреть сообщение
Thinker, нужны делители, отличные от самого числа. Поскольку у 1 нет делителей, отличных от 1, то и сумма несуществующих делителей не равна самому числу. Как-то так. Или вы не об этом?
Это я прекрасно понимаю, я о терминологии собственных делителей. Да и по заданию после отбрасывания может так получиться, что число в 0 выродится.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 22:59     отбрасывание #5
Цитата Сообщение от Thinker Посмотреть сообщение
Да и по заданию после отбрасывания может так получиться, что число в 0 выродится.
Вероятно, тогда надо написать, что это невозможно - нельзя получить совершенное из данного?
Такой вопрос - в задании существенно, что числа в пятиричной системе? Разве числа, которые совершенные в десятичной, не будут совершенными в пятиричной?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 23:11     отбрасывание #6
Цитата Сообщение от aeshes Посмотреть сообщение
Разве числа, которые совершенные в десятичной, не будут совершенными в пятиричной?
От системы счисления не зависит, множество натуральных чисел вводятся не опираясь на системы счисления, поэтому в любой системе счисления будет одинаково совершенное или несовершенное число.

Добавлено через 1 минуту
Цитата Сообщение от aeshes Посмотреть сообщение
Такой вопрос - в задании существенно, что числа в пятиричной системе?
Наверно нет, может можно вводить в десятичной системе, а программа будет переводит в пятиричную.

Добавлено через 6 минут
Что-то вот наскрябал наспех:


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
int Sov(long a)
{
   long i, sum = 1, b = a;
   if (a < 6)
      return 0;
   for(i = 2; i < a; i++)
      if (a%i == 0)
          sum += i;
   return a == sum;
}
 
int Count(long a, long *deg)
{
   int i = 0;
   *deg = 1;
   do
   {
      i++;
      a /= 5;
      (*deg) *= 5;
   }
   while(a);
   return i;
}
 
long Number(long a)
{
   long deg;
   int n = Count(a, &deg);
   while (a && !Sov(a))
   {
      deg /= 5;
      a %= deg;
   }
   return a;
}
 
int main()
{
    long a;
    scanf("%ld", &a);
    printf("%ld\n", Number(a));
    getchar();
    return 0;
}
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 23:18     отбрасывание #7
Thinker, в цикле проверки на совершенность, наверное, можно взять <=a/2, потому что числа, большие половины числа а не могут быть его делителями, кроме самого а, которое отбрасываем, потому что оно не должно включатся в сумму
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 23:21     отбрасывание #8
Цитата Сообщение от aeshes Посмотреть сообщение
Thinker, в цикле проверки на совершенность, наверное, можно взять <=a/2, потому что числа, большие половины числа а не могут быть его делителями, кроме самого а, которое отбрасываем, потому что оно не должно включатся в сумму
Да, спасибо, вечер чувствуется Если есть желание, можете этот код переделать на свое усмотрение

C
1
2
3
4
5
6
7
8
9
10
int Sov(long a)
{
   long i, sum = 1, b = a >> 1;
   if (a < 6)
      return 0;
   for(i = 2; i <= b; i++)
      if (a%i == 0)
          sum += i;
   return a == sum;
}
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
09.10.2011, 23:24     отбрасывание #9
Жаль, что я не ТС, а то б воспользовалась программой
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2011, 23:26     отбрасывание #10
Цитата Сообщение от aeshes Посмотреть сообщение
Жаль, что я не ТС, а то б воспользовалась программой
Спасибо, конечно, но она правда наспех написана
Yandex
Объявления
09.10.2011, 23:26     отбрасывание
Ответ Создать тему
Опции темы

Текущее время: 06:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru