Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1eb9dcb

Browse files
Merge pull request#1411 from shellhub/dev
update armstrong number and add NumberOfDigits
2 parentsab88fed +9a62567 commit1eb9dcb

File tree

3 files changed

+89
-32
lines changed

3 files changed

+89
-32
lines changed

‎DIRECTORY.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
*[GCDRecursion](https://github.com/TheAlgorithms/Java/blob/master/Maths/GCDRecursion.java)
128128
*[MaxValue](https://github.com/TheAlgorithms/Java/blob/master/Maths/MaxValue.java)
129129
*[MinValue](https://github.com/TheAlgorithms/Java/blob/master/Maths/MinValue.java)
130+
*[NumberOfDigits](https://github.com/TheAlgorithms/Java/blob/master/Maths/NumberOfDigits.java)
130131
*[PalindromeNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/PalindromeNumber.java)
131132
*[ParseInteger](https://github.com/TheAlgorithms/Java/blob/master/Maths/ParseInteger.java)
132133
*[PerfectNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/PerfectNumber.java)

‎Maths/NumberOfDigits.java‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
packageMaths;
2+
3+
/**
4+
* Find the number of digits in a number.
5+
*/
6+
publicclassNumberOfDigits {
7+
publicstaticvoidmain(String[]args) {
8+
int[]numbers = {0,12,123,1234, -12345,123456,1234567,12345678,123456789};
9+
for (inti =0;i <numbers.length; ++i) {
10+
assertnumberOfDigits(numbers[i]) ==i +1;
11+
assertnumberOfDigitsFast(numbers[i]) ==i +1;
12+
assertnumberOfDigitsFaster(numbers[i]) ==i +1;
13+
assertnumberOfDigitsRecursion(numbers[i]) ==i +1;
14+
}
15+
}
16+
17+
/**
18+
* Find the number of digits in a number.
19+
*
20+
* @param number number to find
21+
* @return number of digits of given number
22+
*/
23+
privatestaticintnumberOfDigits(intnumber) {
24+
intdigits =0;
25+
do {
26+
digits++;
27+
number /=10;
28+
}while (number !=0);
29+
returndigits;
30+
}
31+
32+
/**
33+
* Find the number of digits in a number fast version.
34+
*
35+
* @param number number to find
36+
* @return number of digits of given number
37+
*/
38+
privatestaticintnumberOfDigitsFast(intnumber) {
39+
returnnumber ==0 ?1 : (int)Math.floor(Math.log10(Math.abs(number)) +1);
40+
}
41+
42+
43+
/**
44+
* Find the number of digits in a number faster version.
45+
*
46+
* @param number number to find
47+
* @return number of digits of given number
48+
*/
49+
privatestaticintnumberOfDigitsFaster(intnumber) {
50+
returnnumber <0 ? (-number +"").length() : (number +"").length();
51+
}
52+
53+
/**
54+
* Find the number of digits in a number using recursion.
55+
*
56+
* @param number number to find
57+
* @return number of digits of given number
58+
*/
59+
privatestaticintnumberOfDigitsRecursion(intnumber) {
60+
returnnumber /10 ==0 ?1 :1 +numberOfDigitsRecursion(number /10);
61+
}
62+
}

‎Others/Armstrong.java‎

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,43 @@
11
packageOthers;
22

3-
importjava.util.Scanner;
4-
53
/**
6-
* A utility to check if a given number is armstrong or not. Armstrong number is
7-
* a number that is equal to the sum of cubes of its digits for example 0, 1,
8-
* 153, 370, 371, 407 etc. For example 153 = 1^3 + 5^3 +3^3
9-
*
10-
* @author mani manasa mylavarapu
4+
* An Armstrong number is equal to the sum of the cubes of its digits.
5+
* For example, 370 is an Armstrong number because 3*3*3 + 7*7*7 + 0*0*0 = 370.
6+
* An Armstrong number is often called Narcissistic number.
117
*/
128
publicclassArmstrong {
13-
staticScannerscan;
149

1510
publicstaticvoidmain(String[]args) {
16-
scan =newScanner(System.in);
17-
intn =inputInt("please enter the number");
18-
booleanisArmstrong =checkIfANumberIsAmstrongOrNot(n);
19-
if (isArmstrong) {
20-
System.out.println("the number is armstrong");
21-
}else {
22-
System.out.println("the number is not armstrong");
23-
}
11+
assert (isArmStrong(0));
12+
assert (isArmStrong(1));
13+
assert (isArmStrong(153));
14+
assert (isArmStrong(1634));
15+
assert (isArmStrong(371));
16+
assert (!isArmStrong(200));
2417
}
2518

2619
/**
27-
* Checks whether a given number is an armstrong number or not. Armstrong
28-
* number is a number that is equal to the sum of cubes of its digits for
29-
* example 0, 1, 153, 370, 371, 407 etc.
20+
* Checks whether a given number is an armstrong number or not.
3021
*
31-
* @param number
32-
* @returnboolean
22+
* @param number number to check
23+
* @return{@code true} if given number is armstrong number, {@code false} otherwise
3324
*/
34-
publicstaticbooleancheckIfANumberIsAmstrongOrNot(intnumber) {
35-
intremainder,sum =0,temp =0;
36-
temp =number;
25+
privatestaticbooleanisArmStrong(intnumber) {
26+
intsum =0;
27+
inttemp =number;
28+
intnumberOfDigits =0;
29+
while (temp !=0) {
30+
numberOfDigits++;
31+
temp /=10;
32+
}
33+
temp =number;/* copy number again */
3734
while (number >0) {
38-
remainder =number %10;
39-
sum =sum + (remainder *remainder *remainder);
40-
number =number /10;
35+
intremainder =number %10;
36+
intpower =1;
37+
for (inti =1;i <=numberOfDigits;power *=remainder, ++i) ;
38+
sum =sum +power;
39+
number /=10;
4140
}
4241
returnsum ==temp;
4342
}
44-
45-
privatestaticintinputInt(Stringstring) {
46-
System.out.print(string);
47-
returnInteger.parseInt(scan.nextLine());
48-
}
4943
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp