BAEL-5385 Code for Automorphic Number. (#11928)
This commit is contained in:
parent
3c5aaa6b09
commit
a2dbf5d892
|
@ -0,0 +1,31 @@
|
|||
package com.baeldung.automorphicnumber;
|
||||
|
||||
public class AutomorphicNumber {
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(isAutomorphicUsingLoop(76));
|
||||
System.out.println(isAutomorphicUsingMath(76));
|
||||
}
|
||||
|
||||
public static boolean isAutomorphicUsingMath(int number) {
|
||||
int square = number * number;
|
||||
|
||||
int numberOfDigits = (int) Math.floor(Math.log10(number) + 1);
|
||||
int lastDigits = (int) (square % (Math.pow(10, numberOfDigits)));
|
||||
|
||||
return number == lastDigits;
|
||||
}
|
||||
|
||||
public static boolean isAutomorphicUsingLoop(int number) {
|
||||
int square = number * number;
|
||||
|
||||
while (number > 0) {
|
||||
if (number % 10 != square % 10) {
|
||||
return false;
|
||||
}
|
||||
number /= 10;
|
||||
square /= 10;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.baeldung.automorphicnumber;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class AutomorphicNumberUnitTest {
|
||||
|
||||
@Test
|
||||
void givenANumber_whenPassed_thenShouldDetermineAutomorphicOrNot() {
|
||||
int number1 = 76; // automorphic
|
||||
int number2 = 16; // not automorphic
|
||||
assertTrue(AutomorphicNumber.isAutomorphicUsingLoop(number1));
|
||||
assertFalse(AutomorphicNumber.isAutomorphicUsingLoop(number2));
|
||||
assertTrue(AutomorphicNumber.isAutomorphicUsingMath(number1));
|
||||
assertFalse(AutomorphicNumber.isAutomorphicUsingMath(number2));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue