一、前言
本系列主要讲解和分析力扣习题,所以的习题均来自于力扣官网题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
二、哈沙德数
1. 哈沙德数
如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number)。给你一个整数 x 如果 x 是 哈沙德数 ,则返回 x 各个数位上的数字之和,否则,返回 -1 。
示例 1:
输入: x = 18
输出: 9
解释:
x 各个数位上的数字之和为 9 。18 能被 9 整除。因此 18 是哈沙德数,答案是 9 。
示例 2:
输入: x = 23
输出: -1
解释:
x 各个数位上的数字之和为 5 。23 不能被 5 整除。因此 23 不是哈沙德数,答案是 -1 。
提示:
-
1 <= x <= 100
2. 思路及算法
考虑到所给的数x并不大,可以直接采用暴力算法。
优先考虑1和100的情况,再计算 x 的数位之和 t,判断 x 是否能被 st整除,若能,则是哈沙德数,返回 t,否则返回 −1
int sumOfTheDigitsOfHarshadNumber(int x) {if(x == 1 || x==100){ return 1;}int a,b,t;a = x % 10;b = x /10;t =a+b;if(x % t ==0){return t;}else{return -1;}
}
结果分析:

3. 复杂度分析
-
时间复杂度:O(logx)。
-
空间复杂度:O(1)。