【C语言】判断一个数是否为2的n次方

//判断一个数是否为2的n次方
#include <stdio.h>
int is_two_n(int num)
{
	if ((num&(num - 1)))   //去掉一个1,判断是否为0
		return -1;
	return 1;
}
int main()
{
	int a;
	printf("请输入数字:");
	scanf_s("%d",&a);
	if (is_two_n(a)==1)
		printf("该数是2的次方\n");
	else
		printf("该数不是2的次方\n");
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 20:34:36

【C语言】判断一个数是否为2的n次方的相关文章

快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方!

将4的幂次方写成2进制形式后,很容易发现有个特点,2进制中只有1个1(1在奇数位置),并且后面跟了偶数个0:因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制可以写为2^(2*n),即也可以写成2的幂次方,当然就满足2的幂次方的条件,即num&(num-1)==0. 思路:首先用条件num&(num-1)==0来判断是否为2的幂次方,若不满足,则不是.若满足,再用条件num&0x5555 5555 来判断,若为真,则这个整数是4 的幂次方.否则不是. #i

C语言判断一个数能否被3和5整除

#include <stdio.h> /* 判断一个数能不能同时被3和5整除 --------soulsjie 20170525----- */ void main(){ int input; printf("请输入一个数:"); scanf("%d",&input); if(input%3==0 && input%5==0) { printf("%d能同时被3和5整除!\n",input); } else{p

c语言判断一个数是不是素数

#include <stdio.h> #include <math.h> int main() { // 输入一个整数数判断是不是素数 // 方法是用这个数去除2到根号num这些数如果为0则不是素数 int m,i,k; printf("请输入一个整数:"); scanf("%d",&m); k=(int)sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) printf

C语言判断一个数是否是素数

素数又称质数.所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数. 思路2):另外判断方法还可以简化.m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了.如果m不能被 2 ~ 间任一整数整除,m必定是素数.例如判别17是是否为素数,只需使17被2~4之间的每一个整数去

判断一个数是否时2的整数次方

题目描述: 给一个数字 N,判断是否是2的整数次方? 解题方向:可以根据二进制的特点,用消去一法直接得出结果. 消去一法:  N--1可以使N的最低位的1为0,所以最低位的1之后的每一位都是0,因此 N &(N--1)(核心)就可以消去最低为的1. 题解思路:由于2的整数次方二进制表示形式只有一个1,所以利用消去1法后,结果一定为0. 代码: //消去一法解是否是2的整数次方 public static boolean f(int N){ //输入的N不能为0 if((N & (N-1))

判断一个数是否是2的幂次方以及保留一个数的最高位的方法

#include <stdio.h> int check_power(unsigned int n){ /**************************************** * 如果n是2的幂,那么 (n-1)也就是其二进制全为1的数 *****************************************/ if (n & (n-1)) { return 1; } return 0;}unsigned int get_next_power(unsigned i

判断一个数是否是4的n次方

def is_Power_of_four(n): while n and not (n & 0b11): n >>= 2 return (n == 1) print(is_Power_of_four(4)) print(is_Power_of_four(12)) print(is_Power_of_four(16)) print(is_Power_of_four(255)) 原文地址:https://www.cnblogs.com/sea-stream/p/10172470.html

c语言实现判断一个数是否是素数

就是判断一个数是否是素数,网上很多版本,我觉得都有点问题,今天一个朋友问我这个问题,我才知道,现在我就贴出自己的代码,很有用哦!! #include<stdio.h> #include<math.h> int Prime(unsigned int a) { unsigned int i; int k=0; if (a==1) k=1; else for(i=2;i<sqrt(a);i++) if(a%i==0) { k=1; break; } return k; } int

c语言快速判断一个数是偶数还是奇数

#include <stdio.h> int main() { int a; while(1) { printf("please input the number:\n"); scanf("%d",&a); if(a&1) { printf("%d是奇数\n",a); } else { printf("%d是偶数\n",a); } } return 0; } 这是一种个人感觉最快的方法啊! 从二进制