Les nombres 32 et 140
Pour calculer le nombre de diviseurs de 32 et la somme de leurs inverses, une seule boucle suffit. On initialise une variable diviseurs (le nombre de diviseurs) à zéro, et on l’incrémente chaque fois qu’on trouve un diviseur (avec « diviseurs++ »). De même on initialise une variable somme et on lui ajoute l’inverse du diviseur chaque fois qu’on en trouve un.
Voici le résultat :
/*Programme tp 105a
*/
var somme=0,diviseurs=0;
for(d=1;d<=32;d=d+1){
if(32%d==0){
diviseurs++;
somme=somme+1/d;
}
}
Println(diviseurs/somme);
Son exécution sous CaRMetal donne 3,0476190476190474 comme quotient, ce qui révèle que 32 n’est pas en division harmonique.
En remplaçant dans le script ci-dessus les deux occurences de 32 par 140, on obtient un quotient de 5 ce qui montre que 140 est en division harmonique.
Nombres premiers
La question suivante consiste à chercher les cinq plus petits nombres de Mersenne premiers.
Une modification du script précédent permet d’y arriver sans calcul formel : Il suffit de compter les diviseurs (un nombre étant premier lorsqu’il en a deux), et de mettre le tout dans une boucle. Le nombre 17 qui clôt la boucle a été trouvé par tâtonnements (moins que 17, on a moins de 5 nombres premiers, et plus que 17, c’est inutile).
Voici le nouveau script :
/*Programme tp 105b
*/
for(n=2;n<=17;n=n+1){
var qn=Math.pow(2,n+1)-1;
var diviseurs=0;
for(d=1;d<=qn;d=d+1){
if(qn%d==0){
diviseurs++;
}
}
if(diviseurs==2){
Println(n+","+qn);
}
}
Elle produit les valeurs suivantes [1] :
valeur de n | Nombre premier |
2 | 7 |
4 | 31 |
6 | 127 |
12 | 8191 |
16 | 131071 |
On y apprend notamment que 131071 est un nombre premier de Mersenne.
Nombres en division harmonique
Pour finir le TP, il reste à panacher les deux scripts précédents :
/*Programme tp 105a
*/
var n=2;
var qn=Math.pow(2,n+1)-1;
var an=Math.pow(2,n)*qn;
var somme=0,diviseurs=0;
for(d=1;d<=an;d=d+1){
if(an%d==0){
diviseurs++;
somme=somme+1/d;
}
}
Println(diviseurs+","+somme+","+diviseurs/somme);
En remplaçant 2 par les autres valeurs de n trouvées précédemment, on construit au fur et à mesure le tableau suivant :
Valeur de n | Nombre de diviseurs | Somme des inverses |
2 | 6 | 2 |
4 | 10 | 2 |
6 | 14 | 2 |
12 | 26 | 2 |
où on voit que le nombre de diviseurs étant pair, et la somme des inverses égale à 2, ces nombres sont en division harmonique.
Pour n=12, il faut presque une minute pour avoir le résultat.
n=16 semble au-delà des possibilités de CaRMetal (et n’était d’ailleurs pas demandé dans l’énoncé du TP : « si possible »...). Ceci dit, wxmaxima confirme que pour n=16 aussi, la somme des inverses des diviseurs est 2 :
Commentaires