给定数字“ n”,发现其除数总数为偶数或奇数。
例子 :
Input : n = 10
Output : Even
Input: n = 100
Output: Odd
Input: n = 125
Output: Even
天真的方法是找到所有除数,然后查看除数的总数是偶数还是奇数。
这种解决方案的时间复杂度为O(sqrt(n))
// Naive Solution to
// find if count of
// divisors is even
// or odd
#include
#include
// Function to count
// the divisors
void countDivisors(int n)
{
// Initialize count
// of divisors
int count = 0;
// Note that this
// loop runs till
// square root
for (int i = 1; i <= sqrt(n) + 1; i++) {
if (n % i == 0)
// If divisors are
// equal increment
// count by one
// Otherwise increment
// count by 2
count += (n / i == i) ? 1 : 2;
}
if (count % 2 == 0)
printf("Even\n");
else
printf("Odd\n");
}
/* Driver program to test above function */
int main()
{
printf("The count of divisor: ");
countDivisors(10);
return 0;
}
输出:
The count of divisor: Even
高效的解决方案:
我们可以观察到,除数的奇数仅在理想平方的情况下才是奇数。因此,最好的解决方案是检查给定的数字是否为完美平方。如果它是一个完美的正方形,那么除数的数量将是奇数,否则将是偶数。
// C++ program for
// Efficient Solution to find
// if count of divisors is
// even or odd
#include
using namespace std;
// Function to find if count
// of divisors is even or
// odd
void countDivisors(int n)
{
int root_n = sqrt(n);
// If n is a perfect square,
// then it has odd divisors
if (root_n * root_n == n)
printf("Odd\n");
else
printf("Even\n");
}
/* Driver program to test above function */
int main()
{
cout << "The count of divisors of 10 is: \n";
countDivisors(10);
return 0;
}
输出:
The count of divisors of 10 is:
Even
请参阅有关检查除数是否为偶数或奇数的完整文章以了解更多详细信息!
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。