题目链接:点击查看
题目描述:
判断一个数字是否是
3
的次方。
输入输出:
输入:n = 27 输出:true
输入:n = 45 输出:false
题目分析:本题有两种解法
方法一:利用对数求解。设 log(3) n = m,如果 n 是 3 的整数次方,那么 m 一定是整数。
代码:
bool isPowerOfThree(int n)
{
return fmod(log10(n)/log10(3),1)==0;//库函数 double fmod(double x, double y) 返回 x 除以 y 的余数。在此除1即判断是否为整数
} //在此运用了对数的换底公式
方法二:在 int 范围内 3 的最大次方是 3^19= 1162261467,如果 n 是 3 的整数次方,那么 1162261467 除以 n 的余数一定是零;反之亦然
代码:
bool isPowerOfThree(int n)
{
return n>0&&1162261467%n==0;
}