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


Загрузить 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), то оно имеет нечетное количество делителей. Если же число не является квадратом другого целого числа, количество его делителей четно.

Реклама

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

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

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

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

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

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

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

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

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

  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  нет.

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

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

Найти все делители числа

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

Найдем делители следующих чисел:
делители числа 2 = 1, 2;
делители числа 5 = 1, 5 ;
делители числа 12 = 1, 2, 3, 4, 6, 12 ;
делители числа 18 = 1, 2, 3, 6, 9, 18 ;
делители числа 24 = 1, 2, 3, 4, 6, 8, 12, 24 ;
делители числа 36 = 1, 2, 3, 4, 6, 9, 12, 18, 36

×

Пожалуйста напишите с чем связна такая низкая оценка:

×

Для установки калькулятора на iPhone — просто добавьте страницу
«На главный экран»

Для установки калькулятора на Android — просто добавьте страницу
«На главный экран»

Смотрите также

If your PC has tons of memory, a brute single line can be fast enough with numpy:

N = 10000000; tst = np.arange(1, N); tst[np.mod(N, tst) == 0]
Out: 
array([      1,       2,       4,       5,       8,      10,      16,
            20,      25,      32,      40,      50,      64,      80,
           100,     125,     128,     160,     200,     250,     320,
           400,     500,     625,     640,     800,    1000,    1250,
          1600,    2000,    2500,    3125,    3200,    4000,    5000,
          6250,    8000,   10000,   12500,   15625,   16000,   20000,
         25000,   31250,   40000,   50000,   62500,   78125,   80000,
        100000,  125000,  156250,  200000,  250000,  312500,  400000,
        500000,  625000, 1000000, 1250000, 2000000, 2500000, 5000000])

Takes less than 1s on my slow PC.

Maxim4090

2 / 2 / 0

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

Сообщений: 72

1

Найти все делители целого положительного числа

27.11.2020, 19:58. Показов 1573. Ответов 14

Метки нет (Все метки)


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

Код программы ниже. Преподаватель просит сделать цикл «for» эффективнее… Каким образом?

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
/* Найти все делители целого положительного числа */ 
#include <QCoreApplication> 
#include <iostream> 
#include <stdio.h> 
#include <clocale> 
 
int main() 
{ 
setlocale(LC_CTYPE, "rus"); 
system ("chcp 1251"); 
 
int i, m; 
 
do 
{ 
printf("Введите целое положительное число -> "); 
scanf("%d", &m); 
} 
while (m<=0); // do-while заставляет пользователя вводить число до тех пор, пока оно не окажется положительным 
 
for (i=1; i<=m; i++) // Переборка значений i от 1 до значения m и поиск таких i, что удовлетворяют делителю 
if (m % i == 0) printf ("Делитель введенного числа = %dn", i); 
 
return 0; 
}



1



0 / 0 / 0

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

Сообщений: 29

27.11.2020, 21:01

2

Возможно это связано с вашей IDE. У меня этот код работает без упрёков



0



2 / 2 / 0

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

Сообщений: 72

27.11.2020, 21:19

 [ТС]

3

Arhipka, У меня тоже код идеально работает и нужную задачу выполняет
Но препод желает видеть более эффективный метод перебора чисел. То есть нужно как-то переписать for, чтобы работало еще лучше(эффективнее, быстрее)



1



0 / 0 / 0

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

Сообщений: 29

27.11.2020, 21:36

4

Окей, понял, можно поделить m на 2, т.к. нет смысла делить 40 на 21и т.д.



0



из племени тумба-юбма

2411 / 1740 / 405

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

Сообщений: 8,426

Записей в блоге: 14

28.11.2020, 09:21

5

не понимаю, как можно сделать эффективнее



0



Verevkin

Нарушитель

8586 / 4591 / 1058

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

Сообщений: 21,533

28.11.2020, 10:54

6

C++
1
2
3
4
5
// делители 1 и m вычислять не надо, они и так известны    
m >>= 1;
for (i = 2; i <= m; i++) 
  if (!(m % i)) 
    printf ("Делитель введенного числа = %dn", i);



0



из племени тумба-юбма

2411 / 1740 / 405

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

Сообщений: 8,426

Записей в блоге: 14

28.11.2020, 11:36

7

всего то?



0



2120 / 948 / 439

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

Сообщений: 2,494

28.11.2020, 11:51

8

Verevkin, это не верный код.. если, например, ввести 30, то делитель 10 он проглотит.



0



мама Стифлера

28.11.2020, 11:54

Не по теме:

это нормально, заборописец гораздо ровнее делает, чем я — кривописец ))



0



analogov net

2120 / 948 / 439

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

Сообщений: 2,494

28.11.2020, 12:06

10

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

это нормально

Ну, да…

Могу предложить такой вариант:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int n = 180;
 
    for( int i = 2; i * i <= n; i++ )
    {
        if( !( n % i ) )
        {
            printf( "%dn", i );
            if( n / i != i )
                printf( "%dn", n / i );
        }
    }
}



1



Verevkin

Нарушитель

8586 / 4591 / 1058

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

Сообщений: 21,533

28.11.2020, 12:33

11

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

то не верный код.. если, например, ввести 30, то делитель 10 он проглотит.

бывает. я ж на заборе пишу

C++
1
2
3
4
5
// делители 1 и m вычислять не надо, они и так известны    
 
  for (int i = 2; i <= m >> 1; i++) 
    if (!(m % i)) 
      printf ("Делитель введенного числа = %dn", i);



1



Диссидент

Эксперт C

27475 / 17161 / 3785

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

Сообщений: 38,668

28.11.2020, 13:02

12

Verevkin, https://www.cyberforum.ru/cgi-bin/latex.cgi?O(sqrt{m)}, O(m) — чуешь разницу?

Добавлено через 8 минут
analogov net, Есть такой еще вариант. Найти все простые делители (со степенями). И генерировать из них все возможные произведения. Если делителей мало, то выигрыш не велик. Но для «многосоставных» чисел — очень даже.
Правда, алгоритм несколько сложнее…



1



Нарушитель

8586 / 4591 / 1058

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

Сообщений: 21,533

28.11.2020, 13:51

13

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

чуешь разницу?

канешна! это же самое важное!

Кликните здесь для просмотра всего текста



0



Байт

28.11.2020, 16:01

Не по теме:

Verevkin, повторяешься…:D



0



Вадим Тукаев

305 / 286 / 116

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

Сообщений: 933

29.11.2020, 14:49

15

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

не понимаю, как можно сделать эффективнее

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int n;
    scanf("%d", &n);
    for (int i = 1; i * i <= n; ++i) {
        div_t d = div(n, i);
        if (d.rem == 0) {
            printf("%dn", i);
            if (d.quot != i) {
                printf("%dn", d.quot);
            }
        }
    }
    return EXIT_SUCCESS;
}



1



IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

29.11.2020, 14:49

Помогаю со студенческими работами здесь

Описать функцию целого типа,находящую количество цифр целого положительного числа К
Описать функцию DigitCount(К) целого типа,находящую количество цифр целого положительного числа…

Определить функцию DigitN (K, N) целого типа, возвращающую N-ю цифру целого положительного числа K
Определить функцию DigitN (K, N) целого типа, возвращающую N-ю цифру целого положительного числа K…

Описать функцию DigitCount (K) целого типа, находящую количество цифр целого положительного числа K
Описать функцию DigitCount (K) целого типа, находящую количество цифр целого
положительного числа…

Найти все простые делители числа
Программа должна находить все простые делители числа.

Выводит не все делители и некоторые не…

Найти числа у которых все делители простые
Номера &quot;XX&quot;

Мы говорим, что целое число &quot;XX&quot;, если все его делителей (кроме себя) простые.

Найти все делители натурального числа n, заданного с клавиатуры
Найти все делители натурального числа n, заданного с клавиатуры.

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

Или воспользуйтесь поиском по форуму:

15

Понравилась статья? Поделить с друзьями:
  • Как исправить узкую горловина
  • Сталкер упавшая звезда как найти команду вертолета
  • Как найти процентное содержание газа
  • Потерян айфон как найти с другого айфона
  • Как найти мавзолей ленина