【C++】判断是不是2、3、4的幂数
来源:互联网 发布:apt-get insall yum 编辑:程序博客网 时间:2024/06/13 23:11
判断一个数是不是2的幂数。若n是2的幂数的话,那么n的二进制中含有1的只有1位;可以用(n&(n-1))==0来判断是不是只有一位为1.
bool twoMi(int n){ if((n&(n-1))==0) return true; else return false;}
判断n是不是3的幂数。
方法:使用一个在整数范围内最大的3的幂数对n求余数,若余数为0那么n是3的幂数,否则不是3的幂数。
这类方法只适合判断是不是素数的幂数,因为素数只能整除自身和1。若n是由该素数和一个合数相乘而来,那么大素数取余的余数肯定不为0;
假设Big3为最大的3的幂,若n是3的幂数,那么肯定有Big3Mi%n==0;若n不是3的幂数,那么n肯定可以被写成
而对于非素数来说在进行到最后一步
bool sanMi(int n){
//得到3的最大数:
int k = log(INT_MAX)/log(3);
int Big3Mi = pow(3,k);
return (Big3Mi%n)==0;
}
判断是不是4的幂数
//判断n是不是4的幂数,n&0x55555555是为了过滤掉类似2,8这种类型的数,留下4,16这种类型的数bool siMi(int n){ if(((n&(n-1))==0)&&(n&0x55555555)) return true; else return false;}
其他:在计算3的最大幂的时候先求出该最大值时所对应的3的幂数k:
阅读全文
0 0
- 【C++】判断是不是2、3、4的幂数
- 判断一个数是不是2的幂
- 判断一个数是不是2的幂
- 判断一个数是不是2的幂
- 【c语言】判断一个数是不是2的n次方
- 如何快速判断一个数是不是2的幂、3的幂、4的幂
- 如何快速判断一个数是不是2的幂、3的幂、4的幂
- 如何快速判断一个数是不是2的幂、3的幂、4的幂
- 快速的判断一个数是不是2,3,4的幂
- 判断一个数是不是2的幂次
- 判断一个数是不是2的n次幂...
- 算法 - 判断一个数是不是2的n次幂
- UVa11254 - Consecutive Integers(判断一个数是不是2的幂)
- 判断一个数是不是2的整数次幂
- 如何判断一个数是不是2的n次幂
- Power of Two 判断一个数是不是2的幂
- Power of Two ----- 判断一个数是不是2的幂
- [算法问题]判断一个数是不是2的幂?
- 深度学习-学习笔记--深度学习中的epochs,batch_size,iterations详解
- Linux驱动:LCD驱动框架分析
- bos项目day04 区域一键上传功能:参数分隔符和赋值符号使用规则
- css超链接中的下划线设置
- 脏读、幻读、不可重复读
- 【C++】判断是不是2、3、4的幂数
- 转载自博客园不思蜀的转载文章:最大子序列和算法分析
- 171120-函数程序练习【连续第二十八天】
- mybatis入门之简单操作
- 通俗易懂的依赖注入
- (ACM)Digital Roots
- 实验6 图的遍历
- (四) java并发编程--线程安全和资源共享
- 欢迎使用CSDN-markdown编辑器