Загрузить PDF
Загрузить PDF
Число называется делителем (или множителем) другого числа в том случае, если при делении на него получается целый результат без остатка.[1]
Для малого числа (например, 6) определить количество делителей довольно легко: достаточно выписать все возможные произведения двух целых чисел, которые дают заданное число. При работе с большими числами определить количество делителей становится сложнее. Тем не менее, если вы разложите целое число на простые множители, то легко сможете определить число делителей с помощью простой формулы.
-
1
Запишите заданное целое число вверху страницы. Вам понадобится достаточно места для того, чтобы расположить ниже числа дерево множителей. Для разложения числа на простые множители можно использовать и другие методы, которые вы найдете в статье Как разложить число на множители.
- Например, если вы хотите узнать, сколько делителей, или множителей имеет число 24, запишите
вверху страницы.
- Например, если вы хотите узнать, сколько делителей, или множителей имеет число 24, запишите
-
2
Найдите два числа (помимо 1), при перемножении которых получается заданное число. Таким образом вы найдете два делителя, или множителя данного числа. Проведите от данного числа две ветки вниз и запишите на их концах полученные множители.
-
3
Поищите простые множители. Простым множителем называется такое число, которое делится без остатка лишь на само себя и на 1.[2]
Например, число 7 является простым множителем, так как оно делится без остатка лишь на 1 и 7. Для удобства обводите найденные простые множители кружком.- Например, 2 является простым числом, поэтому обведите
кружком.
- Например, 2 является простым числом, поэтому обведите
-
4
Продолжайте раскладывать составные (не простые) числа на множители. Проводите следующие ветки от составных чисел до тех пор, пока все множители не станут простыми. Не забывайте обводить простые числа кружками.
-
5
Представьте каждый простой множитель в степенной форме. Для этого подсчитайте, сколько раз встречается каждый простой множитель в нарисованном дереве множителей. Это число и будет степенью, в которую необходимо возвести данный простой множитель.[3]
-
6
Запишите разложение числа на простые множители. Первоначально заданное число равно произведению простых множителей в соответствующих степенях.
- В нашем примере
.
Реклама
- В нашем примере
-
1
-
2
Подставьте в формулу величины степеней. Будьте внимательны и используйте степени при простых множителях, а не сами множители.
-
3
Сложите величины в скобках. Просто прибавьте 1 к каждой степени.
-
4
Перемножьте полученные величины. В результате вы определите количество делителей, или множителей данного числа
.
Реклама
Советы
- Если число представляет собой квадрат целого числа (например, 36 является квадратом числа 6), то оно имеет нечетное количество делителей. Если же число не является квадратом другого целого числа, количество его делителей четно.
Реклама
Похожие статьи
Об этой статье
Эту страницу просматривали 120 968 раз.
Была ли эта статья полезной?
for d in range(2, n//2+1): #честно говоря, не до конца понимаю, какую функцию выполняет здесь n//2+1
т.е. вы написали код и не понимаете что вы написали? или вы его списали?
ну сначала надо разобраться как вообще должен выглядеть алгоритм
если считать, что 1 не является делителем, то тогда вам надо
-
для каждого числа
n
пройтись от числамi
от 2 доn
включительно и попытаться разделить числоn
наi
-
если деление происходит без остатка (модуль равен 0) и делитель — четный, то +1 к кол-ву найденных делителей
for n in range(a, b + 1): count = 0 for j in range(2, n + 1): if n % j == 0 and j % 2 == 0: count += 1 if count == 6: print("нашли")
очевидно, что n
для самого себя является делителем, а ближайший более маленький делитель — это n / 2
, просто потому что 0 < n / (n / 2 + j) < 1
поэтому счетчик делителей можно начинать с 1 и перебирать числа только до n / 2
:
единственное что вначале надо проверить а является ли n
— четным
count = int(n % 2 == 0)
чтобы не делать много if else
просто перевел булево значение в целочисленное
for n in range(a, b + 1):
count = int(n % 2 == 0)
for j in range(2, n // 2 + 1):
if n % j == 0 and j % 2 == 0:
count += 1
if count == 6:
print("нашли")
в данном случае
n // 2 + 1
чтобы гарантированно захватить половину числа n
при переборе
Если надо вывести делители, то тогда всего лишь в код надо добавить их сбор (учесть, что 1 делитель мы знаем всегда — это n
)
for n in range(a, b + 1):
count = int(n % 2 == 0)
dividers = [n] if n % 2 == 0 else []
for j in range(2, n // 2 + 1):
if n % j == 0 and j % 2 == 0:
count += 1
dividers.append(j)
if count == 6:
print(*sorted(dividers))
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
1 |
|
Определить количество четных делителей числа10.07.2014, 09:15. Показов 9877. Ответов 17
Дано натуральное число. Определить количество его делителей. Сколько из них четных? С++(помогите с программой)
0 |
4 / 4 / 1 Регистрация: 23.05.2013 Сообщений: 37 |
|
10.07.2014, 11:23 |
2 |
Ваш код? В чем затруднение? Уже вторую тему вижу от вас, где нет ни кода, ни вопроса.
0 |
rennnorb 19 / 10 / 6 Регистрация: 28.05.2014 Сообщений: 140 |
||||
10.07.2014, 11:30 |
3 |
|||
Как-то так.
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 12:13 [ТС] |
4 |
rennnorb, не хочет работать(
0 |
tdo22 14 / 14 / 13 Регистрация: 14.02.2013 Сообщений: 787 |
||||
10.07.2014, 16:25 |
5 |
|||
не работает потому-что: должно быть как-то так:
0 |
zss Модератор 13101 / 10373 / 6207 Регистрация: 18.12.2011 Сообщений: 27,751 |
||||
10.07.2014, 16:57 |
6 |
|||
if (a%i == 1) Признак четности делителя — остаток от деления этого делителя на 2 равен нулю:
0 |
693 / 303 / 99 Регистрация: 04.07.2014 Сообщений: 842 |
|
10.07.2014, 17:00 |
7 |
for(int c=0; c<a; c++) Проверяешь 0 и не проверяешь c=a, надо for(int c=1; c<=a; c++) Добавлено через 2 минуты
0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
10.07.2014, 17:05 |
8 |
на 7 строке переменой «с» присваивается 0 Вы удивитесь, но присваивается ноль только сначала. А далее идёт итерация. А вот то, что там ноль первое значение, а не один, это плохо. Ибо деленее на ноль не даст ничего хорошего, кроме бесконечности.
i++; А вот это — плохо. Чему у Вас i равно изначально? А я отвечу — хламу. Как и случай с i2.
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 17:38 [ТС] |
9 |
не могу догнать, как сделать условие с четными делителями(
0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
10.07.2014, 17:40 |
10 |
zss написал же Вам.
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 17:57 [ТС] |
11 |
Тамика, не так..
0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
10.07.2014, 17:58 |
12 |
Тамика, не так.. Хоспаде… Что не так?!
0 |
zss Модератор 13101 / 10373 / 6207 Регистрация: 18.12.2011 Сообщений: 27,751 |
||||
10.07.2014, 18:01 |
13 |
|||
не так.. Имеете ввиду, что условия надо вложить друг в друга:
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 18:24 [ТС] |
14 |
zss, все равно считает кол-во четных делителей неправильно, когда вводишь нечетное число
0 |
zss Модератор 13101 / 10373 / 6207 Регистрация: 18.12.2011 Сообщений: 27,751 |
||||
10.07.2014, 18:38 |
15 |
|||
Пардон, если четных, то
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 18:45 [ТС] |
16 |
zss, а теперь когда четное вводишь, неправильно считает кол-во четных делителей)) ахах)
0 |
zss Модератор 13101 / 10373 / 6207 Регистрация: 18.12.2011 Сообщений: 27,751 |
||||
10.07.2014, 19:14 |
17 |
|||
Вот финальный вариант:
0 |
1 / 1 / 0 Регистрация: 19.02.2014 Сообщений: 32 |
|
10.07.2014, 19:27 [ТС] |
18 |
zss, спасибо большое)
0 |
Ответ:
a = int(input(«Введите число: «))
d = int(input(«Введите число d: «))
k = 0
b = 2
c = []
e = 0
even = 0
odd = 0
s = 0
s2 = 0
while b <= a:
if a % b == 0:
c.append(b)
b += 1
k = len(c)
print(‘Все делители’, c)
for i in range(len(c)):
if c[i] % 2 == 0:
even += 1
s2 += c[i]
else:
odd += 1
if c[i] > d:
e += 1
s += c[i]
print(‘Сумма всех делителей: ‘, s)
print(‘Сумма всех четных делителей: ‘, s2)
print(‘Количество всех делителей: ‘, k)
print(‘Количество нечетных делителей: ‘, odd)
print(‘Количество четных делителей: ‘, even)
print(‘Количество делителей больше числа d: ‘, e)
Как найти все делители числа
Число b называется делителем целого числа a, если существует такое целое число q, что bq = a. Обычно рассматривается делимость натуральных чисел. Само делимое a будет называться кратным числа b. Поиск всех делителей числа осуществляется по определенным правилам.
Вам понадобится
- Признаки делимости
Инструкция
Для начала убедимся, что любое натуральное число, большее единицы, имеет по крайней мере два делителя — единицу и само себя. Действительно, a:1 = a, a:a = 1. Числа, имеющие только два делителя, называются простыми. Единственный делитель единицы — это, очевидно, единица. То есть единица не является простым числом (и не является составным, как мы увидим далее).
Числа, имеющие более двух делителей, называются составными. Какие же числа могут быть составными?
Так как четные числа делятся на 2 нацело, то все четные числа, кроме числа 2, будут составными. Действительно, при делении 2:2 двойка делится саму на себя, то есть имеет только два делителя (1 и 2) и является простым числом.
Посмотрим, есть ли у четного числа еще каки-либо делители. Разделим его сначала на 2. Из коммутативности операции умножения очевидно, что получившееся частное также будет делителем числа. Затем, если получившееся частное будет целым, разделим опять на 2 уже это частное. Тогда получившееся в результате новое частное y = (x:2):2 = x:4 тоже будет делителем исходного числа. Аналогично, и 4 будет делителем исходного числа.
Продолжая эту цепочку, обобщим правило: последовательно делим сначала четное число а потом получившееся частные на 2 до тех пор, пока какое-либо частное не станет равно нечетному числу. При этом все получившиеся частные будут делителями этого числа. Кроме этого делителями этого числа будут и числа 2^k где k = 1…n, где n — число шагов этой цепочки.Пример: 24:2 = 12, 12:2 = 6, 6:2 = 3 — нечетное число. Следовательно, 12, 6 и 3 — делители числа 24. В этой цепочке 3 шага, следовательно, делителями числа 24 будут также числа 2^1 = 2 (уже известно из четности числа 24), 2^2 = 4 и 2^3 = 8. Таким образом, числа 1, 2, 3, 4, 6, 8, 12 и 24 будут делителями числа 24.
Однако не для всех четных чисел эта схема может дать все делители числа. Рассмотрим, например, число 42. 42:2 = 21. Однако, как известно, числа 3, 6 и 7 также будут делителями числа 42.
Существуют признаки делимости на определенные числа. Рассмотрим важнейшие из них:
Признак делимости на 3: когда сумма цифр числа делится на 3 без остатка.
Признак делимости на 5: когда последняя цифра числа 5 или 0.
Признак делимости на 7: когда результат вычитания удвоенной последней цифры из этого числа без последней цифры делится на 7.
Признак делимости на 9: когда сумма цифр числа делится на 9 без остатка.
Признак делимости на 11: когда сумма цифр, занимающих нечётные места, либо равна сумме цифр, занимающих чётные места, либо отличается от неё на число, делящееся на 11.
Существуют также признаки делимости на 13, 17, 19, 23 и другие числа.
Как для четных, так и для нечетных чисел нужно использовать признаки деления на то или иное число. Разделив число, следует определить делители получившегося частного и.т.д. (цепочка аналогична цепочки четных чисел при делении их на 2, описанной выше).
Источники:
- Признаки делимости
Войти на сайт
или
Забыли пароль?
Еще не зарегистрированы?
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.