Рубрики

C Программа для проверки, является ли число делителей четным или нечетным

Учитывая число «n», найдите его общее число делителей четное или нечетное.

Примеры :

Input  : n = 10      
Output : Even

Input:  n = 100
Output: Odd

Input:  n = 125
Output: Even

Наивным подходом было бы найти все делители, а затем посмотреть, является ли общее число делителей четным или нечетным.

Временная сложность для такого решения будет O (sqrt (n))

// Наивное решение для
// найти счетчик
// делители четные
// или нечетный
#include <math.h>
#include <stdio.h>

  
// Функция для подсчета
// делители

void countDivisors(int n)

{

    // Инициализировать счет

    // делителей

    int count = 0;

  

    // Обратите внимание, что это

    // цикл продолжается до

    // квадратный корень

    for (int i = 1; i <= sqrt(n) + 1; i++) {

        if (n % i == 0)

  

            // Если делители

            // равный прирост

            // считать по одному

            // Иначе приращение

            // считать на 2

            count += (n / i == i) ? 1 : 2;

    }

  

    if (count % 2 == 0)

        printf("Even\n");

  

    else

        printf("Odd\n");

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

    printf("The count of divisor: ");

    countDivisors(10);

    return 0;

}

Выход:

The count of divisor: Even

Эффективное решение:
Мы можем наблюдать, что число делителей нечетно только в случае совершенных квадратов. Следовательно, лучшим решением было бы проверить, является ли данное число идеальным квадратом или нет. Если это идеальный квадрат, то число делителей будет нечетным, иначе будет четным.

// C ++ программа для
// Эффективное решение для поиска
// если счетчик делителей
// четным или нечетным
#include <bits/stdc++.h>

using namespace std;

  
// Функция, чтобы найти, если считать
// делителей четные или
// странный

void countDivisors(int n)

{

    int root_n = sqrt(n);

  

    // Если n идеальный квадрат,

    // тогда он имеет нечетные делители

    if (root_n * root_n == n)

        printf("Odd\n");

    else

        printf("Even\n");

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

    cout << "The count of divisors of 10 is: \n";

  

    countDivisors(10);

    return 0;

}

Выход:

The count of divisors of 10 is: 
Even

Пожалуйста, обратитесь к полной статье на Проверка, является ли количество делителей четным или нечетным для получения более подробной информации!

Рекомендуемые посты:

C Программа для проверки, является ли число делителей четным или нечетным

0.00 (0%) 0 votes