-
Programme pour calculer le rang d'un entier sociable [JAVA]
Salut tout le monde, j'ai dus développer ce programme pour un DM de spé maths, je le mets à disposition dans le cas où vous en auriez besoin (avec une chance de 0,0000001%).
Voici le résultat de son exécution:
Code à copier coller:
package package0;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static int somme=0;
public static int nombrePrecedent;
public static int ordre=0;
public static ArrayList <Integer> tableauDiv = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner= new Scanner(System.in);
System.out.println("Entrez la valeur de n:");
double n = scanner.nextInt();
calculDiviseursNombre(n);
nombrePrecedent=(int)n;
ordre=0;
while (somme != n) {
somme=0;
for(int k=0; k < tableauDiv.size(); k++) {
if(tableauDiv.get(k) != nombrePrecedent) {
somme+=tableauDiv.get(k);
}
} nombrePrecedent= somme; System.out.println(somme); tableauDiv.clear(); calculDiviseursNombre(somme); ordre++;
}
System.out.println("Ordre="+ordre);
}
public static void calculDiviseursNombre(double n) {
int positionDansLeTableau=0;
//nous faisons une boucle allant de 2 à la racine carrée de n
for(int k=1; k < n; k++) {
if(n%k == 0) {
tableauDiv.add(positionDansLeTableau, (int)(n/k));
positionDansLeTableau++;
}
}
tableauDiv.add(positionDansLeTableau, 1);
}
}
-
Commentaires
Tu prends un entier par exemple N=6; tu fais la somme de ses diviseurs autre que 6 donc S1= 1+2+3 = 6 Au rang 1 (c'est-à-dire pour la première somme) on obtient que S1=N; donc on conclut que 6 est un entier sociable d'ordre 1.
Mais pour certains entiers ça ne fonctionne pas du premier coup; du coup tu dois faire pareil que pour N pour les sommes c'est-à-dire que tu fais la somme des diviseurs de la somme autre que le résultat précédent. Je sais pas si j'ai été clair :/
Ainsi pour N= 8
S1= 1+2+4 = 7
S2= 1 (somme des diviseurs de 7 autre que 7 ect..)
On notera qu'ici 7 n'est pas un entier sociable puisque si on continue on arrivera pas à Sn = N :D
Ajouter un commentaire
Kesako ? A quoi ça peut servir ?
Salut,
Très bonne question x'D! J'ai dus développer ce programme pour un devoir de spé-maths il permet de gagner un temps considérable dans le calcul du rang d'un entier sociable, comme je l'ai dis ça risque pas de servir à grand monde mais on sait jamais x'D
Mais qu'est-ce que le rang d'un entier sociable ?