Programme de nombres magiques en Java
En programmation informatique, le terme nombre magique a plusieurs significations. Dans cet article, nous discuterons du nombre magique et développerons également un programme Java pour vérifier que le nombre donné est un nombre magique ou non.
Un nombre est dit être un nombre magique si la somme de ses chiffres est calculée jusqu'à un seul chiffre de manière récursive en ajoutant la somme des chiffres après chaque addition. Si le chiffre unique est 1, alors le nombre est un nombre magique. Des exemples de nombres magiques sont :- 10, 19, 28, 55, 1234 etc.
1054 =1 + 0 + 5 + 4 =10 (C'est un nombre à 2 chiffres, donc trouvez à nouveau la somme des chiffres)
10 =1 + 0 =1 (enfin la somme des chiffres est 1)
D'où 1054 est un nombre magique.
De même,
25417 =2 + 5 + 4 + 1 + 7 =19 (Puisque c'est un nombre à deux chiffres)
19 =1 + 9 =10 (Encore une fois c'est un nombre à deux chiffres)
10 =1 + 0 =1 (enfin la somme des chiffres est 1)
D'où 25417 est un nombre magique.
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();
}
}
La sortie pour les différents cas de test est :-
Entrez un nombre entier ::28
28 est un nombre magique
Entrez un nombre entier ::12345
12345 n'est pas un nombre magique
Voir également :- Numéro spécial, Numéro magique, Numéro Armstrong, Numéro parfait, Numéro maléfique, Numéro espion, Numéro ensoleillé en Java
Approche directe
La somme des chiffres jusqu'à un seul chiffre en Java peut également être calculée en divisant directement le nombre par 9. Si le nombre est divisible par 9, c'est la somme des chiffres jusqu'à ce qu'un seul chiffre soit 9, sinon c'est le nombre % 9
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();
}
}
Programme Java pour trouver tous les nombres magiques dans la plage donnée
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();
}
}
La sortie pour les différents cas de test est :-
Entrez la plage min : 1
Entrez la plage max : 100
Les nombres magiques de 1 à 100 sont :1 10 19 28 37 46 55 64 73 82 91
Entrez la plage min : 100
Entrez la plage max : 200
Les nombres magiques de 100 à 200 sont :100 109 118 127 136 145 154 163 172 181 190 199
Entrez la plage min : 1000
Entrez la plage max : 1111
Les nombres magiques de 1000 à 1111 sont :1000 1009 1018 1027 1036 1045 1054 1063 1072 1081 1090 1099 1108