如何在 Java 中检查一个数是否为 Niven 数?


Niven 数可以定义为一个数,它可以被其各位数字之和整除。它也被称为 Harshad 数。

在这篇文章中,我们将了解如何使用 Java 编程语言来检查 Niven 数。

举一些例子

示例 1

输入数字为 3

让我们使用 Niven 数的逻辑来检查它 -

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

所以,3 可以被 3 整除。

因此,3 是一个 Niven 数。

示例 2

输入数字为 18

让我们使用 Niven 数的逻辑来检查它 -

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

所以,18 可以被 9 整除。

因此,18 是一个 Niven 数。

示例 3

输入数字为 14

让我们使用 Niven 数的逻辑来检查它 -

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

所以,14 不能被 5 整除。

因此,14 不是一个 Niven 数。

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

语法

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

以下是通过将整数转换为字符串并查找其长度并将长度分配给整数变量来获取数字中总位数的语法 -

String str = Integer.toString(input_number);

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

int length = st.length();

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

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

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

算法

算法 1

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

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

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

算法 2

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

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

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

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

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

多种方法

我们提供了不同的方法来解决这个问题。

  • 不使用字符串

  • 使用字符串

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

方法 1:不使用字符串

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

示例

import java.util.*; public class Main{ //main method public static void main(String args[]){ //declared an integer variable and initialized the value int originalNumber = 21; //print the given input number 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 niven number"); else System.out.println(copyOfOriginalNumber+" is not a niven number"); } }

输出

Given number:21
21 is a niven number

方法 2:使用用户定义

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

示例

import java.util.*; public class Main{ //main method public static void main(String args[]){ //declared an integer variable and initialized the value int originalNumber = 40; //print the given input number 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 niven number"); else System.out.println(copyOfOriginalNumber+" is not a niven number"); } }

输出

Given number:40
40 is a niven number

在这篇文章中,我们探讨了如何在 Java 中使用不同的方法来检查一个数字是否为 Niven 数。

更新于: 2022 年 10 月 27 日

10K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.