Magic Number Program i Java
I computerprogrammering har udtrykket magisk tal flere betydninger. I dette indlæg vil vi diskutere det magiske tal og også udvikle et Java-program til at kontrollere, at det givne tal er et magisk tal eller ej.
Et tal siges at være et magisk tal, hvis summen af dets cifre beregnes til et enkelt ciffer rekursivt ved at tilføje summen af cifrene efter hver tilføjelse. Hvis enkeltcifret kommer ud til at være 1, så er tallet et magisk tal. Eksempler på magiske tal er:- 10, 19, 28, 55, 1234 e.t.c.
1054 =1 + 0 + 5 + 4 =10 (Det er et 2-cifret tal, så find igen summen af cifre)
10 =1 + 0 =1 (til sidst er summen af cifre 1)
Derfor 1054 er et magisk tal.
Tilsvarende
25417 =2 + 5 + 4 + 1 + 7 =19 (da det er et tocifret tal)
19 =1 + 9 =10 (Igen er det tocifret tal)
10 =1 + 0 =1 (summen af cifre er endelig 1)
Derfor er 25417 et magisk tal.
import java.util.Scanner;
public class MagicNumber {
// method to find sum of digits
// of a given number
public static int sumOfDigits(int number) {
int sum = 0;
while(number != 0) {
// find last digit
// add last digit to sum
sum += (number % 10);
// remove last digit
number = number / 10;
}
// return sum of digits of the number
return sum;
}
// method to check number is magic number
public static boolean isMagic(int number) {
int result = number;
// find sum of digits until
// number having single digit
while(result / 10 != 0) {
result = sumOfDigits(result);
}
return (result==1) ? true : false;
}
public static void main(String[] args) {
// declare variables
int number = 0;
// read the input
Scanner scan = new Scanner(System.in);
System.out.print("Enter an integer number:: ");
number = scan.nextInt();
// check the number is magic number or not
if(isMagic(number))
System.out.println(number+" is a"
+ " magic number");
else
System.out.println(number+" is not a"
+ " magic number");
// close Scanner class object
scan.close();
}
}
Outputtet for de forskellige testcases er:-
Indtast et heltal::28
28 er et magisk tal
Indtast et helt tal::12345
12345 er ikke et magisk tal
Se også:- Specialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spionnummer, Sunny-nummer i Java
Direkte tilgang
Summen af cifre indtil et enkelt ciffer i Java kan også beregnes ved direkte at dividere tallet med 9. Hvis tallet er deleligt med 9, er det Summen af cifre, indtil enkelt ciffer er 9, ellers er det tallet % 9 stærk>
import java.util.Scanner;
public class MagicNumber {
// method to find digital sum
public static boolean isMagic(int number) {
if(number%9 == 1) return true;
else return false;
}
public static void main(String[] args) {
// declare variables
int number = 0;
// read the input
Scanner scan = new Scanner(System.in);
System.out.print("Enter an integer number:: ");
number = scan.nextInt();
// check the number is magic number or not
if(isMagic(number))
System.out.println(number+" is a"
+ " magic number");
else
System.out.println(number+" is not a"
+ " magic number");
// close Scanner class object
scan.close();
}
}
Java-program til at finde alle magiske tal i det givne område
import java.util.Scanner;
public class MagicNumber {
// method to find digital sum
public static boolean isMagic(int number) {
if(number%9 == 1) return true;
else return false;
}
public static void main(String[] args) {
// declare variables
int minRange = 0;
int maxRange = 0;
// read the input
Scanner scan = new Scanner(System.in);
System.out.print("Enter min range:: ");
minRange = scan.nextInt();
System.out.print("Enter max range:: ");
maxRange = scan.nextInt();
// find all magic numbers
System.out.println("The magic numbers"
+ " from "+minRange+" to "
+maxRange+ " are: ");
for(int i=minRange; i<maxRange; i++) {
if(isMagic(i))
System.out.print(i+"\t");
}
// close Scanner class object
scan.close();
}
}
Outputtet for de forskellige testcases er:-
Indtast minimum interval::1
Indtast max interval::100
De magiske tal fra 1 til 100 er:1 10 19 28 37 46 55 64 73 82 91
Indtast minimum interval::100
Indtast max interval::200
De magiske tal fra 100 til 200 er:100 109 118 127 136 145 154 163 172 181 190 199
Indtast minimum interval::1000
Indtast max interval::1111
De magiske tal fra 1000 til 1111 er:1000 1009 1018 1027 1036 1045 1054 1063 1072 1081 1090 1099 1108