目标
如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(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
思路
判断给定的整数x的各位数字之和能否整除x,如果可以返回各位数字之和,否则返回-1。
代码
/**
* @date 2024-07-03 0:40
*/
public class SumOfTheDigitsOfHarshadNumber3099 {
public int sumOfTheDigitsOfHarshadNumber(int x) {
int sum = 0;
// 容易出错的点是直接对x进行修改,后面求余的时候就错了
int digit = x;
while (digit > 0) {
sum += digit % 10;
digit /= 10;
}
return x % sum == 0 ? sum : -1;
}
}