奇数是一个非负数,二进制扩展中的奇数为1。因此,前几个可恶数字是1、2、4、7、8、11、13、14、16、19…
给定数字,检查其是否为可恶数字。
例子 :
Input : 16
Output : Odious Number
Explanation: Binary expansion of 16 = 10000,
having number of 1s =1 i.e odd.
Input : 23
Output : Not odious number
Explanation: Binary expansion of 23 is 10111,
the number of 1s in this is 4 i.e even.
1)计算给定编号中的设置位。
2)如果计数为奇数,则返回true,否则返回false。
C++
// C/C++ program to check if a number is
// Odious Number or not
#include
using namespace std;
#include
/* Function to get no of set bits in binary
representation of passed binary no.
Please refer below for details of this
function :
https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */
int countSetBits(int n)
{
unsigned int count = 0;
while (n)
{
n &= (n-1) ;
count++;
}
return count;
}
// Check if number is odious or not
int checkOdious(int n)
{
return (countSetBits(n) % 2 == 1);
}
// Driver Code
int main()
{
int num = 32;
if (checkOdious(num))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java program to check if a number is
// Odious Number or not
import java.io.*;
import java.math.*;
class GFG {
/* Function to get no of set bits in binary
representation of passed binary no.
Please refer below for details of this
function :
https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */
static int countSetBits(int n)
{
int count = 0;
while (n!=0)
{
n &= (n-1) ;
count++;
}
return count;
}
// Check if number is odious or not
static boolean checkOdious(int n)
{
return (countSetBits(n) % 2 == 1);
}
// Driver Code
public static void main(String args[])
{
int num = 32;
if (checkOdious(num))
System.out.println("Yes");
else
System.out.println("No");
}
}
/*This code is contributed by Nikita Tiwari.*/
Python3
# Python 3 program to check if a number is
# Odious Number or not
# Function to get no of set bits in binary
# representation of passed binary no.
# Please refer below for details of this function :
# https://www.geeksforgeeks.org/count-set-bits-in-an-integer
def countSetBits(n) :
count = 0
while (n) :
n = n & (n-1)
count = count + 1
return count
# Check if number is odious or not
def checkOdious(n) :
return (countSetBits(n) % 2 == 1)
# Driver Code
num = 32
if (checkOdious(num)) :
print("Yes")
else :
print("No")
# This code is contributed by Nikita Tiwari.
C#
// C# program to check if a number
// is Odious Number or not
using System;
class GFG {
/* Function to get no of set bits in
binary representation of passed binary
no. Please refer below for details
of this function :
https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */
static int countSetBits(int n)
{
int count = 0;
while (n != 0)
{
n &= (n - 1) ;
count++;
}
return count;
}
// Check if number is odious or not
static bool checkOdious(int n)
{
return (countSetBits(n) % 2 == 1);
}
// Driver Code
public static void Main()
{
int num = 32;
if (checkOdious(num))
Console.Write("Yes");
else
Console.Write("No");
}
}
/*This code is contributed by vt_m.*/
PHP
Javascript
输出 :
Yes