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 String类内置的 length() 方法,该方法返回String对象的长度。
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 来检查该数字是否为尼文数。
示例
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数。