如何在 Java 中检查一个数是否为哈沙德数?


哈沙德数可以定义为一个可以被其各位数字之和整除的数。简单来说,如果一个数的各位数字之和是该数的一个因子,那么它就是一个哈沙德数。

在本文中,我们将了解如何使用 Java 编程语言来检查哈沙德数。

举几个例子:

示例 1

输入数字为 18

让我们使用哈沙德数的逻辑来检查它:

数字的各位数字之和 = 1 + 8 = 9。

所以,18 可以被 9 整除。

因此,18 是一个哈沙德数。

示例 2

输入数字为 3

让我们使用哈沙德数的逻辑来检查它:

数字的各位数字之和 = 3。

所以,3 可以被 3 整除。

因此,3 是一个哈沙德数。

示例 3

输入数字为 15

让我们使用哈沙德数的逻辑来检查它:

数字的各位数字之和 = 1 + 5 = 6。

所以,15 不能被 6 整除。

因此,14 不是一个哈沙德数。

其他一些哈沙德数的例子包括 1、2、4、5、6、7、8、9、10、12、18、20 等。

语法

使用内置的 toString() 方法将整数转换为字符串。

以下是通过将整数转换为字符串,然后查找其长度并将其长度赋给一个整数变量来获取数字中总位数的语法:

String str = Integer.toString(input_number);

要获取整数的长度,我们将使用 Java String 类内置的 length() 方法,该方法返回 String 对象的长度。

int length = st.length();

要获取字符串中特定位置/索引处的字符,我们使用 charAt() 方法。其中 charAt(i)-‘0’ 返回实际的整数值。

int num = st.charAt(i)-‘0’;

其中 ‘st’ 指的是字符串,‘i’ 是迭代字符串的迭代器变量。

算法

算法 1

  • 步骤 1 - 获取一个整数,可以通过初始化或用户输入获取。

  • 步骤 2 - 通过迭代数字的每一位,找到数字每一位的和。

  • 步骤 3 - 然后检查原始数字是否可以被所有数字之和整除。如果可以整除,则给定数字是哈沙德数,否则不是哈沙德数。

算法 2

  • 步骤 1 - 获取一个整数,可以通过初始化或用户输入获取。

  • 步骤 2 - 使用内置的 toString() 方法将该整数转换为字符串。

  • 步骤 3 - 使用内置的 length() 方法查找字符串的长度。

  • 步骤 4 - 然后使用 for 循环,迭代到字符串的长度,并使用 charAt(i)-‘0’ 从字符串中获取一位一位的整数值,并跟踪所有数字的和。

  • 步骤 5 - 然后检查原始数字是否可以被所有数字之和整除。如果可以整除,则给定数字是哈沙德数,否则不是哈沙德数。

多种方法

我们提供了不同方法的解决方案

  • 不使用字符串

  • 使用字符串

让我们逐一查看程序及其输出。

方法 1:不使用字符串

在这种方法中,将在程序中初始化一个整数值,然后使用 算法 1 检查一个数是否为哈沙德数。

示例

public class Main{ //main method public static void main(String args[]){ //Declared an integer variable and initialized a number as value int originalNumber = 21; //printing the given number to be checked System.out.println("Given number: "+originalNumber); //keep a copy of original number int copyOfOriginalNumber = originalNumber; //initialize sum as 0 int sum = 0; //Find sum of all digits of the number //continue the loop till the number is greater than 0 while(originalNumber > 0){ //get the rightmost digit of the number by using % operator int rem = originalNumber%10; //add the digit(rem) to sum sum = sum + rem; //remove the rightmost digit from number and get the updated number originalNumber = originalNumber/10; } //printing the result if(copyOfOriginalNumber % sum == 0) System.out.println(copyOfOriginalNumber+" is a Harshadnumber"); else System.out.println(copyOfOriginalNumber+" is not a Harshadnumber"); } }

输出

Given number: 21
21 is a Harshad number

方法 2:使用字符串

在这种方法中,将在程序中初始化一个整数值,然后使用算法 2 检查该数是否为哈沙德数。

示例

public class Main{ //main method public static void main(String args[]){ //Declared an integer variable and initialized a number as value int originalNumber = 40; //printing the given number to be checked System.out.println("Given number: "+originalNumber); //keep a copy of original number int copyOfOriginalNumber = originalNumber; //initialize sum as 0 int sum = 0; //convert the integer to string by using toString() method String str = Integer.toString(originalNumber); //find length of String by using length() method //which is nothing but total number of digits in the given number int length=str.length(); //iterate the String and get the digits by using charAt(i)-'0' //find the sum of digits for(int i = 0; i < length; i++){ sum += str.charAt(i)-'0'; } //printing the result if(copyOfOriginalNumber % sum == 0) System.out.println(copyOfOriginalNumber+" is a Harshad number"); else System.out.println(copyOfOriginalNumber+" is not a Harshad number"); } }

输出

Given number: 40
40 is a Harshad number

在本文中,我们探讨了如何使用不同的方法在 Java 中检查一个数是否为哈沙德数。

更新于: 2022 年 10 月 27 日

2K+ 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.