Somme de diviseurs / Nombres parfaits / Nombres amis
Partie HTML / CSS
On demande de créer le formulaire suivant à l'aide du langage HTML et de le mettre en forme en CSS :
Code HTML
<form>
<div>
<label><input type="radio" id="som-div" name="choix" value="1" checked> Somme diviseurs</label>
<label><input type="radio" id="nbr-par" name="choix" value="2"> Nombres parfaits</label>
<label><input type="radio" id="nbr-amis" name="choix" value="3"> Nombres amis</label>
</div>
<div>
<label for="a">A</label><input type="number" id="a" name="a"
min="1" max="99999" placeholder="Nombre entre 1 et 99999">
</div>
<div>
<label for="b">B</label><input type="number" id="b" name="b"
min="1" max="99999" placeholder="Nombre entre 1 et 99999">
</div>
<div><button type="button" id="calc">Calculer</button></div>
<div>
<label for="res">Résultat</label><textarea id="res" name="b" readonly></textarea>
</div>
</form>
Code CSS
* {
box-sizing: border-box;
}
body {
background-color: #FFD6C0;
font-family: sans-serif;
font-size: 12pt;
}
form {
width: 400px;
margin: 50px auto;
padding: 30px;
background-color: #FFA5A5;
border-radius: 10px;
}
form > div {
margin: 10px 0;
}
label {
display: block;
}
input[type="number"],
textarea {
width: 100%;
padding: 10px;
border-radius: 8px;
background-color: #EC368D;
border: none;
color: #FFD6C0;
font-size: 12pt;
}
button {
padding: 10px 30px;
border: none;
border-radius: 8px;
background-color: #440381;
color: #FFD6C0;
font-size: 12pt;
font-weight: bold;
}
Partie JavaScript
const radSomDiv = document.getElementById("som-div");
const radNbrPar = document.getElementById("nbr-par");
const radNbrAmis = document.getElementById("nbr-amis");
const inpA = document.getElementById("a");
const inpB = document.getElementById("b");
const btnCalc = document.getElementById("calc");
const inpRes = document.getElementById("res");
// fonction appelée lorsqu'on clique sur le bouton Calculer
function btnCalcClicked(e) {
const choix = radSomDiv.checked * 1 + radNbrPar.checked * 2 + radNbrAmis.checked * 3;
if (choix == 1) {
calcSommeDiv();
}
//
// à compléter
//
}
btnCalc.addEventListener("click", btnCalcClicked);
// fonction qui calcule la somme de diviseur d'un nombre
// sauf lui même
function somdiv(n) {
let s = 0;
for (let i = 1; i <= n / 2; i++) {
if (n % i == 0) {
s += i;
}
}
return s;
}
// Récupère les données du formulaire
// Calcule la somme des diviseurs de A et de B
// Puis les affiche
function calcSommeDiv() {
const a = Number(inpA.value);
const b = Number(inpB.value);
const sda = somdiv(a);
const sdb = somdiv(b);
inpRes.value = "somdiv(" + a + ") = " + sda + "\nsomdiv(" + b + ") = " + sdb;
}
// Compléter le code précédent, ajouter les fonctions nécessaires pour :
// - Calculer les nombres parfaits situés dans l'intervalle [a, b]
// - Calculer les nombres amis situés dans l'intervalle [a, b]
// NB : si somdiv(n) = n alors n est un nombre parfait
// Exemple : somdiv(6) = 1+2+3 = 6 => 6 est un nombre parfait
// NB : si somdiv(a) = b et somdiv(b) = a alors a, b sont deux nombres amis
// Exemple : somdiv(220) = 284 et somdiv(284) = 220 => 220 et 284 sont deux nombres amis