Как быстро найти делители большого числа


Загрузить PDF


Загрузить PDF

Число называется делителем (или множителем) другого числа в том случае, если при делении на него получается целый результат без остатка.[1]
Для малого числа (например, 6) определить количество делителей довольно легко: достаточно выписать все возможные произведения двух целых чисел, которые дают заданное число. При работе с большими числами определить количество делителей становится сложнее. Тем не менее, если вы разложите целое число на простые множители, то легко сможете определить число делителей с помощью простой формулы.

  1. Изображение с названием Determine the Number of Divisors of an Integer Step 1

    1

    Запишите заданное целое число вверху страницы. Вам понадобится достаточно места для того, чтобы расположить ниже числа дерево множителей. Для разложения числа на простые множители можно использовать и другие методы, которые вы найдете в статье Как разложить число на множители.

    • Например, если вы хотите узнать, сколько делителей, или множителей имеет число 24, запишите 24 вверху страницы.
  2. Изображение с названием Determine the Number of Divisors of an Integer Step 2

    2

    Найдите два числа (помимо 1), при перемножении которых получается заданное число. Таким образом вы найдете два делителя, или множителя данного числа. Проведите от данного числа две ветки вниз и запишите на их концах полученные множители.

  3. Изображение с названием Determine the Number of Divisors of an Integer Step 3

    3

    Поищите простые множители. Простым множителем называется такое число, которое делится без остатка лишь на само себя и на 1.[2]
    Например, число 7 является простым множителем, так как оно делится без остатка лишь на 1 и 7. Для удобства обводите найденные простые множители кружком.

    • Например, 2 является простым числом, поэтому обведите  2 кружком.
  4. Изображение с названием Determine the Number of Divisors of an Integer Step 4

    4

    Продолжайте раскладывать составные (не простые) числа на множители. Проводите следующие ветки от составных чисел до тех пор, пока все множители не станут простыми. Не забывайте обводить простые числа кружками.

  5. Изображение с названием Determine the Number of Divisors of an Integer Step 5

    5

    Представьте каждый простой множитель в степенной форме. Для этого подсчитайте, сколько раз встречается каждый простой множитель в нарисованном дереве множителей. Это число и будет степенью, в которую необходимо возвести данный простой множитель.[3]

  6. Изображение с названием Determine the Number of Divisors of an Integer Step 6

    6

    Запишите разложение числа на простые множители. Первоначально заданное число равно произведению простых множителей в соответствующих степенях.

    • В нашем примере 24=2^{{3}}times 3^{{1}}.

    Реклама

  1. Изображение с названием Determine the Number of Divisors of an Integer Step 7

    1

  2. Изображение с названием Determine the Number of Divisors of an Integer Step 8

    2

    Подставьте в формулу величины степеней. Будьте внимательны и используйте степени при простых множителях, а не сами множители.

  3. Изображение с названием Determine the Number of Divisors of an Integer Step 9

    3

    Сложите величины в скобках. Просто прибавьте 1 к каждой степени.

  4. Изображение с названием Determine the Number of Divisors of an Integer Step 10

    4

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

    Реклама

Советы

  • Если число представляет собой квадрат целого числа (например, 36 является квадратом числа 6), то оно имеет нечетное количество делителей. Если же число не является квадратом другого целого числа, количество его делителей четно.

Реклама

Похожие статьи

Об этой статье

Эту страницу просматривали 121 121 раз.

Была ли эта статья полезной?

Нахождение всех делителей числа

  • Все делители числа
  • Калькулятор нахождения всех делителей

Все делители числа

Все делители, на которые данное число делится нацело, можно получить из разложения числа на простые множители.

Нахождение всех делителей числа выполняется следующим образом:

  1. Сначала нужно разложить данное число на простые множители.
  2. Выписываем каждый полученный простой множитель (без повторов, если какой-то множитель повторяется).
  3. Далее, находим всевозможные произведения всех полученных простых множителей между собой и добавляем их к выписанным простым множителям.
  4. В конце добавляем в качестве делителя единицу.

Например, найдём все делители числа  40.  Раскладываем число  40  на простые множители:

40 = 23 · 5.

Выписываем (без повторов) каждый полученный простой множитель — это  2  и  5.

Далее находим всевозможные произведения всех полученных простых множителей между собой:

2 · 2 = 4,
2 · 2 · 2 = 8,
2 · 5 = 10,
2 · 2 · 5 = 20,
2 · 2 · 2 · 5 = 40.

Добавляем в качестве делителя  1.  В итоге получаем все делители, на которые число  40  делится без остатка:

1,  2,  4,  5,  8,  10,  20,  40.

Других делителей у числа  40  нет.

Калькулятор нахождения всех делителей

Данный калькулятор поможет вам получить все делители числа. Просто введите число и нажмите кнопку «Вычислить».

На этой странице вы узнаете

  • Как быстро работает программа?
  • Есть ли смысл перебирать делители после корня?
  • Что количество делителей может сказать о самом числе?

Гадание на кофейной гуще или на картах Таро? Может, на ромашке? Хотя лучше не доверять свои отношения цветку. Наша судьба — только в наших руках. А судьба чисел предопределена заранее. Сегодня мы будем предсказывать их жизнь и судьбу по делителям. Но главная проблема — найти эти делители.

Постановка проблемы. Переборное решение

Встречали ли вы странных персонажей в задачах, которым резко понадобилось купить 50 арбузов? А что подумаете, если ваш учитель математики задаст найти число, у которого 50 делителей?

Поиск делителей в математике не самый сложный процесс. Есть разные способы: разложение на простые множители, обычный перебор и так далее. Сложность задания будет зависеть от самого числа. Довольно быстро получится найти делители числа 24 — число небольшое, красивое, удобное. Нахождение делителей числа 1234567 займет гораздо больше времени.

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

Идея в следующем:

  1. Создадим список, в который мы сохраним все делители числа.
  2. С помощью цикла for переберем все числа из диапазона от 1 до самого числа.
  3. Если в переборе мы нашли такое число, которое является делителем исходного — остаток от деления будет равен 0 — сохраним это число в список.

В итоге мы получим список всех делителей исходного числа.


number = 1234567
dels = []

for i in range(1, number + 1):
	if number % i == 0:
		dels.append(i)

print(dels)
_____________________________________________________________________
Вывод: [1, 127, 9721, 1234567]

У этого метода есть очень большая проблема — время его работы.

Программа выполняет команды очень быстро, но не бесконечно быстро.

Как быстро работает программа?

Время работы программы можно измерить. Например, Sublime Text 3 занимается этим автоматически. И он помог посчитать, что программа выше выполнилась за 0.2 секунды. Давайте постепенно повышать ставки и смотреть, сколько времени понадобится этой же программе для поиска делителей других чисел:
— число 1234567 — 0.2 секунды;
— число 12345670 — 0.9 секунды;
— число 123456700 — 8.0 секунд;
— число 1234567000 — 115.7 секунд.

С числом 1234567 программа сделала 1234567 шагов цикла for, и справилась неимоверно быстро. Но чем больше ей придется выполнять команд, тем дольше придется работать.

Замеры времени зависят от многих факторов, например, мощности компьютера. Но мы можем повысить эффективность работы программы. 

Ускоренный перебор делителей

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

Возьмем число 24. Найдя его делитель 2, мы сразу можем сказать, что у 24 есть еще один делитель — 12, потому что 12 = 24 / 2. Интересная мысль? Давайте ее развивать.

Найдем по такой логике все делители числа 16.

  1. Самый простой делитель числа — 1. И по этой логике сразу найдем второй делитель — само число 16, так как 16 / 1 = 16.
  1. Проверим число 2. Это делитель, так что сразу найдем его пару: 16 / 2 = 8.
  1. Проверяем число 3 — это не делитель, его просто пропускаем.
  1. При проверке числа 4 мы столкнемся с интересной ситуацией. Его парой будет 16 / 4 = 4 — то же самое число, а мы ищем различные пары. Значит, у корня числа пары не будет: найдя корень, мы найдем только один делитель.

Если мы продолжим перебор, числа 5, 6 и 7 — не будут делителями. А за ними — 8, делитель, который мы уже нашли.

Есть ли смысл перебирать делители после корня?

Нет. Найдя “маленький” делитель, при ускоренном переборе мы можем найти его пару, которая будет “большим” делителем. Перебирая делители, рано или поздно мы дойдем до корня числа, у которого нет пары. Перебирая числа после корня, мы будем находить только “большие” делители, которые уже нашли в паре с “маленькими”.

Если у числа целого корня нет, перебираем до его округленного вниз значения.
Нам нет смысла перебирать числа после корня, так что будем перебирать до предельно близкого к нему значения, но не больше.

Логика программы будет такой:

  1. Перебираем числа от 1 до корня исходного числа.
  2. Если мы нашли корень числа, добавляем в список делителей только его.
  3. Если мы нашли не корень, а обычный делитель — добавляем в список сразу пару делителей.

Пример реализации ускоренного перебора делителей для числа 1234567000:


number = 1234567000
dels = []

for i in range(1, int(number ** 0.5) + 1):
	if i * i == number:
		dels.append(i)
	elif number % i == 0:
		dels.append(i)
		dels.append(number // i)

print(len(dels))
_____________________________________________________________________
Вывод: 64

Эта программа нашла все делители числа и выдала их количество — 64. А на ее работу ушло меньше секунды.

Но и это не панацея. Что, если нам придется проверить делители сразу нескольких чисел? Например, мы хотим найти все числа, у которых ровно 7 делителей, в диапазоне от 1 до 10000. 

Программу надо немного модифицировать:

  1. заведем переменную-счетчик, которая будет считать подходящие числа;
  2. number сделаем перебираемой переменной по нужному диапазону с помощью цикла for;
  3. ускоренный перебор будет внутри перебора number;
  4. в конце каждого шага цикла проверяем — если делителей у числа ровно 7, то увеличиваем наш счетчик на 1.

Теперь программа будет выглядеть следующим образом:


count = 0
for number in range(1, 10000):
	dels = []

	for i in range(1, int(number ** 0.5) + 1):
		if i * i == number:
			dels.append(i)
		elif number % i == 0:
			dels.append(i)
			dels.append(number // i)

	if len(dels) == 7:
		count += 1

print(count)
_____________________________________________________________________
Вывод: 2

Эта программа работала всего 0.2 секунды. Звучит неплохо, но давайте снова поднимать ставки:

  1. диапазон 1 — 10000 — 0.2 секунды;
  2. диапазон 1 — 100000 — 2.6 секунды;
  3. диапазон 1 — 1000000 — 80.2 секунды.

Время снова увеличивается очень быстро. Что можно с этим сделать? 

Еще более ускоренный перебор делителей

Не считаем, что не нужно

Обратите внимание — программа выше нашла среди чисел 1–10000 всего 2 числа, имеющих ровно 7 делителей. А сколько же у остальных? Может быть и больше, может быть и меньше. Например, у числа 9864 делителей аж 24 штуки. Стоило ли тратить время на поиск их всех, если количество делителей больше 7?

Конечно, нет. Как только мы нашли 8 штук, мы уже можем понять, что анализировать число далее нам неинтересно. Значит, нужно остановить работу цикла.

Команда break полностью останавливает работу цикла.

Мы можем модернизировать нашу последнюю программу: если в переборе делителей мы увидим, что их больше семи, завершаем цикл командой break.


count = 0
for number in range(1, 10000):
	dels = []

	for i in range(1, int(number ** 0.5) + 1):
		if i * i == number:
			dels.append(i)
		elif number % i == 0:
			dels.append(i)
			dels.append(number // i)
		if len(dels) > 7:
			break

	if len(dels) == 7:
		count += 1

print(count)

При этом завершится именно цикл перебора делителей i, так как break находится именно в нем, а цикл перебора number продолжит свою работу.

Давайте произведем замеры еще раз:

  1. диапазон 1-10000 — 0.2 секунды;
  2. диапазон 1-100000 — 2.1 секунды;
  3. диапазон 1-1000000 — 53.5 секунды.

В последнем случае мы сэкономили около трети от времени работы программы. Но и это не предел.

Не считаем, что не нужно 2.0

Вернемся на несколько абзацев выше, когда мы искали делители числа 16. Мы нашли 5 делителей — 2 пары и 1 корень, который не даст пару. Это справедливо для любого числа: целый корень не будет давать пару ни с каким другим числом, а все остальные делители — будут. 

Что количество делителей может сказать о числе?

Если у числа есть целый корень, количество делителей числа будет нечетным, так как корень не даст пару ни с кем.
Если же у числа целого корня нет — количество его делителей будет четным, так как все делители будут иметь пару.

Нам нужны числа, у которых ровно 7 делителей. Следовательно, нам нужны числа, у которых есть целый корень. Это можно проверить, вычислив точный корень числа и его округленное значение. Если они совпадут, значит, округлять корень было некуда и он целый. 

Но как пропускать числа, которые нам не нужны?

Команда continue останавливает работу текущего шага цикла и сразу переходит к следующему.

Если мы найдем число number, у которого нет целого корня, мы можем применить команду continue: данный шаг цикла перебора number завершается, и мы сразу перейдем к следующему.

Включить эту проверку в программу можно следующим образом:


count = 0
for number in range(1, 10000):
	if number ** 0.5 != int(number ** 0.5):
		continue

	dels = []

	for i in range(1, int(number ** 0.5) + 1):
		if i * i == number:
			dels.append(i)
		elif number % i == 0:
			dels.append(i)
			dels.append(number // i)
		if len(dels) > 7:
			break

	if len(dels) == 7:
		count += 1

print(count)

Снова посмотрим на время работы программы при разных диапазонах:

  1. диапазон 1-100000 — 0.1 секунды;
  2. диапазон 1-1000000 — 0.5 секунды;
  3. диапазон 1-10000000 — 4.5 секунды;
  4. диапазон 1-100000000 — 44.4 секунды.

А делители — это вообще для чего? А таблицы со временем — это точно важно? Может, подождать проще, чем учить все это?

Нахождению делителей чисел посвящена задача 25 ЕГЭ, и без этих теоретических знаний решить ее крайне сложно. Что же касается времени работы, то за ним приходится следить внимательнейшим образом, ведь в задачах могут встречаться ситуации, когда надо найти делители для сотен миллионов чисел за раз!

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

Фактчек

  • Ускоренный перебор делителей подразумевает нахождение делителей попарно, при этом перебирать делители достаточно только до корня числа.
  • Команда break полностью останавливает работу цикла, а команда continue завершает работу лишь текущего шага цикла, перенося нас сразу на следующий.
  • Если у числа есть целый корень, количество делителей числа будет нечетным, так как корень не даст пару ни с кем. Если же у числа целого корня нет — количество его делителей будет четным, так как все делители будут иметь пару.

Проверь себя

Задание 1.
Для чего нужен ускоренный перебор делителей?

  1. Обычный перебор слишком скучный
  2. Для большей точности вычислений
  3. Для ускорения работы программы

Задание 2.
Найдите количество делителей числа 2568568668.

  1. 5
  2. 6
  3. 7
  4. 8

Задание 3.
Найдите, сколько чисел из диапазона от 2000 до 1002000 имеют ровно 5 делителей.

  1. Ни одного
  2. 1
  3. 10
  4. 8

Ответы: 1. — 3; 2. — 3; 3. — 4.

36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

1

Как найти все делители большого числа?

21.02.2021, 12:51. Показов 3316. Ответов 16


Студворк — интернет-сервис помощи студентам

Мне нужно найти все делители 20! * 21! и потом среди них найти кол-во делителей, которые являются точными квадратами или точными кубами. Второй шаг это легко, но как найти все делители такого большого числа?



0



3484 / 2092 / 560

Регистрация: 02.09.2015

Сообщений: 5,336

21.02.2021, 12:54

2

Цитата
Сообщение от gray621
Посмотреть сообщение

но как найти все делители такого большого числа?

Предположу, что с помощью факторизации. Более подробно, я надеюсь, подскажет Gdez))



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 12:56

 [ТС]

3

у меня получилось это сделать для 20!, но для 21! уже не получилось…

Добавлено через 39 секунд
Arsegg, ты и Gdez самые лучшие, чаще всего отвечаете мне



0



Arsegg

3484 / 2092 / 560

Регистрация: 02.09.2015

Сообщений: 5,336

21.02.2021, 13:34

4

gray621, из множителей составишь делители:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def factor(n):
    while n % 2 == 0:
        yield 2
        n //= 2
    i = 3
    while i * i <= n:
        while n % i == 0:
            yield i
            n //= i
        i += 2
    if n > 1:
        yield n
    
def factorFactorial(n):
    for i in range(2, n + 1):
        yield from factor(i)
        
def factorMultipicationOfFactorials(*args):
    for arg in args:
        yield from factorFactorial(arg)
        
print(*factorMultipicationOfFactorials(20, 21))

А вторую часть задания выполнить уже не составит труда, я думаю…
/upd

Python
1
2
3
from collections import Counter
 
print(Counter(factorMultipicationOfFactorials(20, 21)))

Выведет: Counter({2: 36, 3: 17, 5: 8, 7: 5, 11: 2, 13: 2, 17: 2, 19: 2})



0



Gdez

Эксперт Python

7259 / 4048 / 1780

Регистрация: 27.03.2020

Сообщений: 6,875

21.02.2021, 14:13

5

gray621,

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def factorization(num):
    p = []
    while not num % 2:
        p.append(2)
        num //= 2
    d = 3
    while d * d <= num:
        while not num % d:
            p.append(d)
            num //= d
        d += 2
    if num > 1:
        p.append(num)
    return p
 
n=int(input())
pp=[]
for i in range(2,n+1):
    pp.extend(factorization(i))
pp.sort()
print(pp[-1])

Все множители(!) числа 500000! (факториал 500 000) на ideon за 5 сек

Добавлено через 1 минуту
В принципе как у Arsegg. Там фишка в алгоритме второй части задания



0



gray621

36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 14:18

 [ТС]

6

Arsegg, простые множители произведения 20! * 21! = 124299255809188481393766275481600000000

Python
1
2 ** 36 * 3 ** 17 * 5 ** 8 * 7 ** 5 * 11 ** 2 * 13 ** 2 * 17 ** 2 * 19 ** 2

Добавлено через 1 минуту
у числа 124299255809188481393766275481600000000 38 нулей…



0



194 / 160 / 41

Регистрация: 13.05.2019

Сообщений: 828

21.02.2021, 14:19

7

Gdez, Так и не понял, что считает эта штука. Но это вроде не множители.

upd: Понял.



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 14:32

 [ТС]

8

Gdez, я ввел 124299255809188481393766275481600000000 и че-то он не посчитал, и что он считает?



0



3484 / 2092 / 560

Регистрация: 02.09.2015

Сообщений: 5,336

21.02.2021, 14:43

9

Цитата
Сообщение от gray621
Посмотреть сообщение

00000000

Цитата
Сообщение от gray621
Посмотреть сообщение

38 нулей…

Я вижу только 8:

Цитата
Сообщение от gray621
Посмотреть сообщение

2 ** 36 * 3 ** 17 * 5 ** 8 * 7 ** 5 * 11 ** 2 * 13 ** 2 * 17 ** 2 * 19 ** 2



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 14:53

 [ТС]

10

Arsegg, я имею ввиду разрядов

Добавлено через 36 секунд
ну а как дальше посчитать делители, которые являются точными кубами или точными квадратами?



0



3484 / 2092 / 560

Регистрация: 02.09.2015

Сообщений: 5,336

21.02.2021, 14:57

11

Цитата
Сообщение от gray621
Посмотреть сообщение

ну а как дальше посчитать делители, которые являются точными кубами или точными квадратами?

Хз. Этим сам займись.



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 16:34

 [ТС]

12

блин, я не знаю как, ну типа если там 7 ** 5, то 7 ** 2 будет квадратом, 7 ** 3 будет кубом, а может быть что-то типа 2 ** 3 * 3 ** 3 — кубом или квадратом?



0



Gdez

Эксперт Python

7259 / 4048 / 1780

Регистрация: 27.03.2020

Сообщений: 6,875

21.02.2021, 18:16

13

gray621, примеры тестов есть?
Для 20!*21! получилось 41040 множителей квадратов.

Добавлено через 23 минуты
gray621,

Python
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
from collections import Counter
 
def factorization(num):
    p = []
    while not num % 2:
        p.append(2)
        num //= 2
    d = 3
    while d * d <= num:
        while not num % d:
            p.append(d)
            num //= d
        d += 2
    if num > 1:
        p.append(num)
    return p
 
 
def main():
    num = list(map(int,input().split())) # числа 20 и 21
    pp=[]
    for n in num:
        for i in range(2,n+1):
            pp.extend(factorization(i))
 
    d = Counter(pp).values()
    d3 = d2 = 1
    for k in d:
        v2 = k // 2
        if v2:
            d2 *= v2 + 1
        v3 = k // 3
        if v3:
            d3 *= v3 + 1
    return d2, d3
 
main()



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

21.02.2021, 22:28

 [ТС]

14

Gdez, нужно посчитать сколько множителей точных квадратов и кубов, может быть записывать их во множество?



0



Эксперт Python

7259 / 4048 / 1780

Регистрация: 27.03.2020

Сообщений: 6,875

21.02.2021, 22:40

15

gray621, «не потянет» — слишком большой диапазон

Добавлено через 1 минуту
gray621, на «небольших» прогонял код. Вроде верно



0



36 / 51 / 11

Регистрация: 14.01.2021

Сообщений: 406

22.02.2021, 01:11

 [ТС]

16

Gdez, вы же нашли множители квадраты, почему нельзя найти еще и кубы



0



Gdez

Эксперт Python

7259 / 4048 / 1780

Регистрация: 27.03.2020

Сообщений: 6,875

22.02.2021, 05:02

17

gray621, gray621,

Python
1
return d2, d3



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

22.02.2021, 05:02

17

Как найти количество делителей

В самом общем случае, количество возможных делителей произвольного числа бесконечно. Фактически, это все не равные нулю числа. Но если речь идет о натуральных числах, то под делителем числа N подразумевается такое натуральное число, на которое нацело делится число N. Количество таких делителей всегда ограничено, а найти их можно с помощью специальных алгоритмов. Также существуют простые делители числа, которые представляют собой простые числа.

Как найти количество делителей

Вам понадобится

  • — таблица простых чисел;
  • — признаки делимости чисел;
  • — калькулятор.

Инструкция

Чаще всего, нужно разложить число на простые множители. Это числа, которые делят исходное число без остатка, и при этом сами могут делиться без остатка только на само себя и единицу (к таким числам относятся 2, 3, 5, 7, 11, 13, 17 и т.д.). Причем, никакой закономерности в ряду простых чисел не найдено. Возьмите их из специальной таблицы или найдите при помощи алгоритма, который называется «решето Эратосфена».

Начинайте подбирать простые числа, на которые делится данное число. Частное снова делите на простое число и продолжаете этот процесс до тех пор, пока в качестве частного не останется простое число. Затем просто посчитайте количество простых делителей, прибавьте к нему число 1 (которое учитывает последнее частное). Результатом будет количество простых делителей, которые при умножении дадут искомое число.

Например, количество простых делителей числа 364 найдите таким образом:

364/2=182
182/2=91
91/7=13

Получите числа 2, 2, 7, 13, которые являются простыми натуральными делителями числа 364. Их количество равно 3 (если считать повторяющиеся делители за один).

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

Записывайте произведение от наименьших множителей к наибольшим. Такое произведение и называется каноническим разложением числа. Каждый множитель этого разложения имеет степень, представленную натуральным числом (1, 2, 3, 4 и т.д.). Обозначьте показатели степени при множителях а1, а2, а3, и т.д. Тогда общее количество делителей будет равно произведению (a1 + 1)∙(a2 + 1)∙(a3+1)∙…

Например, возьмите то же число 364: его каноническое разложение 364=2²∙7∙13. Получите а1=2, а2=1, а3=1, тогда количество натуральных делителей этого числа будет равно (2+1)∙(1+1)∙(1+1)=3∙2∙2=12.

Источники:

  • Число и сумма натуральных делителей натурального числа

Войти на сайт

или

Забыли пароль?
Еще не зарегистрированы?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Понравилась статья? Поделить с друзьями:
  • Как найти длину стороны если известен периметр
  • Как найти стоимость молока
  • Неподдерживаемое 16 разрядное приложение windows 7 как исправить ошибку
  • Как найти свои удаленные фото вконтакте
  • Как найти площадь круга примеры задач