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),常數空間。
廣告