LC 326:3的幂

判断是否是3的幂次方


问题描述:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27
输出: true

示例 2:

输入: 0
输出: false

示例 3:

输入: 9
输出: true

示例 4:

输入: 45
输出: false

解题思路:

  找出数字 n 是否是数字 b 的幂的一个简单方法是,n%b只要余数为 0,就一直将 n 除以 b。如果n是b的幂,那么最终结果肯定是1.
eg.(1)1%3 = =1(true);
     (2)3%3= =0         3/3== 1(true)
     (3)45%3= =0   15%3==0   5%3= =2(false)

代码如下:

 #include<iostream>
 #include<math.h> 
 using namespace std;
 bool isPowerOfThree(int n) {
		if(n<=0){     //小于0返回false
			return false;
		}
		while(n%3==0){
			n/=3;    //一直将 n 除以 3
		}
		return n==1; //判断n的最终结果是否为1
}
int main(){
   	int n;
   	while(cin>>n){
   		if(isPowerOfThree(n)){
   			cout<<"true"<<endl;
   			cout<<"--------------------------"<<endl;
		}else{
			cout<<"false"<<endl;
			cout<<"--------------------------"<<endl;
		}
	}   	
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值