《算法零基础100讲》(第1讲) 幂和对数

这篇博客介绍了如何通过算法判断一个整数是否为2或者3的幂次方。主要涉及到对数和幂的运算,通过计算log并进行浮点数比较来确定。示例展示了对于2的幂次方和3的幂次方的判断方法,利用了log2(n)和log2(n)/log2(3)计算指数,并用fabs进行精度判断。
摘要由CSDN通过智能技术生成

跟着英雄学算法打卡第一天

bool isPowerOfFour(int n){
    if(n == 0) {
        return false;                          // (1)
    }
    int x = (int)(log2(n) / log2(4) + 1e-8);   // (2)
    return fabs(n - pow(4, x)) < 1e-8;         // (3)
}

bool类型是用来判断真假的,true为1,false为0

1.n=0为特殊情况

2.换底公式,并且加上一个精度,避免精度缺失导致取整错误

3.浮点数的相等判定

 对数和幂

若判断一个数是否为4的对数 n=4^x

即x=log4(n);可以使用fabs来判断,由于fabs是判断小数的绝对值,如果两数相等,

则fabs(a-b)<1e-8;即小于一个无穷小,a和b两个数相等

换底公式中用2为底和以10为底的更好计算

力扣题

. 2 的幂

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1
输出:true
解释:20 = 1

示例 2:

输入:n = 16
输出:true
解释:24 = 16

示例 3:

输入:n = 3
输出:false

示例 4:

输入:n = 4
输出:true

示例 5:

输入:n = 5
输出:false
bool isPowerOfTwo(int n){

if(n==0)
return false;
else
{
    int x=(int)(log2(n)+1e-8);
    return fabs(n-pow(2,x))<1e-8;
}
}

3的幂次方

bool isPowerOfThree(int n){
if(n==0)
{
    return false;
}
else
{
    int x=(int)(log2(n)/log2(3)+1e-8);
    return fabs(n-pow(3,x))<1e-8;
}

}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevin~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值