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),常数空间。
广告