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


Загрузить 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 раз.

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

for d in range(2, n//2+1): #честно говоря, не до конца понимаю, какую функцию выполняет здесь n//2+1

т.е. вы написали код и не понимаете что вы написали? или вы его списали?

ну сначала надо разобраться как вообще должен выглядеть алгоритм

если считать, что 1 не является делителем, то тогда вам надо

  1. для каждого числа n пройтись от числам i от 2 до n включительно и попытаться разделить число n на i

  2. если деление происходит без остатка (модуль равен 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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
 int a, i, i2;// a - само число, i2 - количество четных делителей, i - всего делителей
 cin>>a;
 for(int c=0; c<a; c++)
  if(a%c==0)//а делится без остатка на с
  {
    i++;
    if(c%2==0)
     i2++;
  }
 cout<<"Делителей = "<<i<<" , из них четных "<<i2<<endl;
 return 0;
}

Как-то так.



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

не работает потому-что:
на 7 строке переменой «с» присваивается 0

должно быть как-то так:

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
#include <iostream>
using namespace std;
 
int main()
{
    int a = 0, // Пользовательское число
        b = 0, // Четные
        c = 0; // Делителей всего
 
    cout << "Enter number: ";
    cin >> a;
 
    for (int i = 1; i < a; i++)
    {
        if (a%i == 0)
            b++;
        if (a%i == 1)
            c++;
    }
 
    cout << "Делителей = " << b << " , из них четных " << c << endl;
 
 
    system("PAUSE");    
    return 0;
}



0



zss

Модератор

Эксперт С++

13101 / 10373 / 6207

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

Сообщений: 27,751

10.07.2014, 16:57

6

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

if (a%i == 1)

Признак четности делителя — остаток от деления этого делителя на 2 равен нулю:

C++
1
if (i%2 == 0)



0



693 / 303 / 99

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

Сообщений: 842

10.07.2014, 17:00

7

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

for(int c=0; c<a; c++)

Проверяешь 0 и не проверяешь c=a, надо for(int c=1; c<=a; c++)

Добавлено через 2 минуты
Кроме этого достаточно перебирать до корня a, и если делиться, то будем получать два делителя, которые и надо проверять на чётность.



0



Котовчанин

942 / 482 / 200

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

Сообщений: 3,338

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

10.07.2014, 17:05

8

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

на 7 строке переменой «с» присваивается 0

Вы удивитесь, но присваивается ноль только сначала. А далее идёт итерация. А вот то, что там ноль первое значение, а не один, это плохо. Ибо деленее на ноль не даст ничего хорошего, кроме бесконечности.

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

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

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

Тамика, не так..

Хоспаде… Что не так?!
Что такое четное число прочитайте! Это число, которое при делении на 2 даст в остатке ноль! Что не так?!



0



zss

Модератор

Эксперт С++

13101 / 10373 / 6207

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

Сообщений: 27,751

10.07.2014, 18:01

13

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

не так..

Имеете ввиду, что условия надо вложить друг в друга:

C++
1
2
3
4
5
6
 if (a%i == 0)
{
        b++;
        if (i%2== 1)
            c++;
}



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

Пардон, если четных, то

C++
1
2
3
4
5
6
 if (a%i == 0) // i - делитель числа a 
{
        b++;
        if (i%2== 0) // кроме того, он четный
            c++;
}



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

Вот финальный вариант:

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 <iostream>
#include <locale>
using namespace std;
 
int main()
{
    int a = 0, // Пользовательское число
        b = 0, // Делителей всего
        c = 0; // Четные
    setlocale(LC_ALL,"Rus");
    cout << "Введите число:";
    cin >> a;
    for (int i = 1; i <= a; i++)
    {
        if (a%i == 0)
        {
            b++;
            if (i%2 == 0)
                 c++;
        }
    }
    cout << "Делителей = " << b << " , из них четных " << c << endl;
    system("PAUSE");    
    return 0;
}



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.

Понравилась статья? Поделить с друзьями:
  • Как составить цель индивидуального проекта
  • 484 ошибка меркурий 115ф как исправить
  • Как найти свежие объявления на авито
  • Как найти звонок по дате
  • Математический маятник как найти радиус