问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何判断一个数是否是哈沙德数(Harshad number)

创作时间:
作者:
@小白创作中心

如何判断一个数是否是哈沙德数(Harshad number)

引用
CSDN
1.
https://m.blog.csdn.net/Misnearch/article/details/140161943

问题描述

哈沙德数(Harshad number)是指一个数能够被其各位数字之和整除的数。例如,18是一个哈沙德数,因为18可以被1+8=9整除。

解题思路

要判断一个数是否是哈沙德数,可以按照以下步骤进行:

  1. 计算该数的各位数字之和
  2. 判断原数是否能被这个和整除

如果能整除,则该数是哈沙德数;否则不是。

代码实现

以下是使用C++、Python和Java三种语言实现的代码示例:

C++

class Solution {
public:
    int sumOfTheDigitsOfHarshadNumber(int x) {
        int sumnum = 0, temp = x;
        while(temp){
            sumnum += temp%10;
            temp /= 10;
        }
        if (x%sumnum == 0) return sumnum;
        else return -1;
    }
};

另一种更简洁的C++实现:

class Solution {
public:
    int sumOfTheDigitsOfHarshadNumber(int x) {
        int s = 0;
        // for循环代替while循环
        for (int y = x; y; y /=10){
            s += y%10;
        }
        // 三元运算符
        return x%s ? -1 : s;
    }
};

Python

Python中的三目运算符基本语法如下:
value_if_true if condition else value_if_false
内置函数divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

class Solution:
    def sumOfTheDigitsOfHarshadNumber(self, x: int) -> int:
        s = 0
        y = x
        while y:
            y, r = divmod(y, 10)
            s += r
        return -1 if x % s else s

Java

class Solution {
    public int sumOfTheDigitsOfHarshadNumber(int x) {
        int s = 0;
        for (int y = x; y != 0; y /= 10){
            s += y % 10;
        }
        return x % s != 0 ? -1 : s;
    }
}

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号