C++程序检查一个数是否为哈沙德数


哈沙德数是一种特殊的数。哈沙德数或尼文数是指一个数能够被其各位数字之和整除,且余数为零的数。在本文中,我们将学习如何检查给定的数是否为哈沙德数。

问题描述

给定一个数,如果该数是哈沙德数或尼文数,则返回true;如果该数不是哈沙德数,则返回false

示例1

输入

108

输出

yes

解释

各位数字之和:1 + 0 + 8 = 9
现在,我们进行除法:108 ÷ 9 = 12
它可以被整除,且没有余数。
所以,这是一个哈沙德数。

示例2

输入

13

输出

no

解释

13的各位数字之和为 1 + 3 = 4。
当13除以4时,余数为1。
所以,这不是一个哈沙德数。

在C++中检查哈沙德数

在C++中,为了检查一个给定的数是否为哈沙德数,我们将使用一种简单直接的方法。我们将使用一个变量来存储该数的各位数字之和。现在,我们检查该数是否可以被各位数字之和整除。如果该数可以被各位数字之和整除,则打印“是的,这是一个哈沙德数”,否则打印“不,这不是一个哈沙德数”。

C++程序检查哈沙德数

#include <bits/stdc++.h>
using namespace std;

int main() {
int number = 108;
int temp = number;
int sum = 0;

while (temp != 0) {
	sum += temp % 10;
	temp /= 10;
}

if (number % sum == 0) {
	cout << "yes, this is a Harshad number" << "\n";
} else {
	cout << "no, this is not a Harshad number" << "\n";
}

return 0;
}

输出

yes, this is a Harshad number

时间和空间复杂度

时间复杂度:O(n),因为我们正在寻找各位数字之和。

空间复杂度:O(1),常数空间。

AYUSH MISHRA
AYUSH MISHRA

工程师

更新于: 2024年11月21日

1 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告