前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harsh

2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harsh

作者头像
福大大架构师每日一题
发布2024-11-19 11:29:54
发布2024-11-19 11:29:54
810
举报
文章被收录于专栏:福大大架构师每日一题

2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除,

我们称这个整数为哈沙德数(Harshad number)。

给定一个整数 x,

如果 x 是哈沙德数,则返回 x 各个数位的数字和;

如果不是,则返回 -1。

输入:x = 18。

输出:9。

解释:

x 各个数位上的数字之和为 9 。18 能被 9 整除。因此 18 是哈沙德数,答案是 9 。

答案2024-11-16:

chatgpt

题目来自leetcode3099。

大体步骤如下:

1.函数定义

  • • 定义了一个函数 sumOfTheDigitsOfHarshadNumber,接受一个整数 x 作为参数,目的在于计算该数字的各个数位的和并判断是否为哈沙德数。

2.初始化总和

  • • 在函数内部,初始化一个变量 s 为 0 用于保存数字各位的和。
  • • 另外,将输入的 x 赋给循环变量 y,后续的操作将会用 y而不是直接修改 x

3.计算各位数字和

3.1.使用一个 for 循环,循环条件是 y 不等于 0。

3.2.在每次循环中:

3.2.1.使用 y % 10 获取 y 的最后一位数字,并将其加到 s 上。

3.2.2.然后通过 y /= 10y 除以 10,以去掉最后一位数字。

3.3.循环结束时,变量 s 中存储的即为 x 各位数字的和。

4.判断是否为哈沙德数

  • • 在计算完数字和 s 之后,检查 x 是否能被 s 整除(x % s)。如果不能整除,函数返回 -1,表示 x 不是哈沙德数。
  • • 如果能整除,则返回 s,表示 x 是哈沙德数,我们返回各个数字的和。

5.主函数

  • • 在 main 函数中,定义一个整数 x(在此例中为 18)。
  • • 调用 sumOfTheDigitsOfHarshadNumber(x) 函数,并打印其返回值。

时间复杂度

  • • 计算数字和的步骤涉及到对 x 的每一位进行一次访问。假设 x 的位数为 d,则时间复杂度为 O(d)。
  • • 在十进制中,位数与数字大小的对数成正比(d = log10(x)),因此可以认为时间复杂度是 O(log x)。

空间复杂度

  • • 函数中使用了几个整数变量(sy),这些变量的空间占用是常数级别的。
  • • 因此,空间复杂度为 O(1),即常数级空间复杂度。

总结

  • 时间复杂度:O(log x)
  • 空间复杂度:O(1)

Go完整代码如下:

代码语言:javascript
复制
package main

import(
"fmt"
)

func sumOfTheDigitsOfHarshadNumber(x int)int{
    s :=0
for y := x; y !=0; y /=10{
        s += y %10
}

if x%s !=0{
return-1
}
return s
}

func main(){
    x :=18
    fmt.Println(sumOfTheDigitsOfHarshadNumber(x))
}

Rust完整代码如下:

代码语言:javascript
复制
fn sum_of_the_digits_of_harshad_number(x:i32)->i32{
letmut s=0;
letmut y= x;

while y !=0{
        s += y %10;
        y /=10;
}

if x % s !=0{
return-1;
}
    s
}

fnmain(){
letx=18;
println!("{}",sum_of_the_digits_of_harshad_number(x));
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
    • 时间复杂度
      • 空间复杂度
        • 总结
        • Go完整代码如下:
        • Rust完整代码如下:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档