File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/3A12-JWs2P4Yj.js.map
{"version":3,"file":"3A12-JWs2P4Yj.js","sources":["../../src/exercices/3e/3A12.js"],"sourcesContent":["import { choice, combinaisonListesSansChangerOrdre } from '../../lib/outils/arrayOutils'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\nimport { katexPopup2, lampeMessage, warnMessage } from '../../lib/format/message.js'\nimport { modalPdf } from '../../lib/outils/modales.js'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport { decompositionFacteursPremiers, pgcd } from '../../lib/outils/primalite.js'\nimport { texNombre } from '../../lib/outils/texNombre.js'\nimport Exercice from '../Exercice.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu, randint, ppcm } from '../../modules/outils.js'\nimport { svgEngrenages } from '../../modules/macroSvgJs.js'\nexport const titre = 'Solve a gears exercise'\nexport const dateDeModifImportante = '01/04/2023'\n/**\n * ppcmEngrenages\n * les deux on besoin de la def partielle serie : stlX\n * pb dans la sortie LaTeX, revoir comment user de la fonction katexPopup2() pour affichage d'une note hors texte !\n * @author Sébastien Lozano\n * Référence 3A12\n */\nexport const uuid = 'ce352'\nexport const ref = '3A12'\nexport default function PpcmEngrenages () {\n Exercice.call(this) // Héritage de la classe Exercice()\n this.titre = titre\n // no difference between the html version and the latex version for the instructions\n this.consigne = ''\n context.isHtml ? this.spacing = 2 : this.spacing = 2\n context.isHtml ? this.spacingCorr = 2 : this.spacingCorr = 1\n this.nbQuestionsModifiable = false\n this.nbQuestions = 4\n // this.DetailedCorrectionAvailable = true;\n this.nbCols = 1\n this.nbColsCorr = 1\n this.listePackages = 'bclogo'\n this.sup = false\n\n const numEx = '3A12' // pour rendre unique les id des SVG, en cas d'utilisation dans plusieurs exercices y faisant appel\n\n this.nouvelleVersion = function (numeroExercice) {\n let typesDeQuestions\n if (context.isHtml) { // les boutons d'aide uniquement pour la version html\n // this.helpbutton = '';\n this.boutonAide = modalPdf(numeroExercice, 'assets/pdf/FicheArithmetique-3A13.pdf', 'Cheat sheet - Arithmetic (Sébastien Lozano)', 'Cheat sheet')\n } else { // sortie LaTeX\n }\n\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.contenu = '' // Liste de questions\n this.contenuCorrection = '' // Liste de questions corrigées\n\n const typesDeQuestionsDisponibles = [1, 2, 3]\n // const AvailableQuestionTypes = [2]\n const listeTypeDeQuestions = combinaisonListesSansChangerOrdre(typesDeQuestionsDisponibles, this.nbQuestions)\n let txtIntro = 'Gearbox, bicycle transmission, motorcycle transmission, electric drill, all of this works with gears! But actually, how do gears work?'\n if (context.isHtml) {\n const idUnique = `${numEx}_${Date.now()}`\n const idDivIntro = `divIntro${idUnique}`\n // We add a customElement to the register via the svgEngrenages() function\n svgEngrenages()\n txtIntro += warnMessage(`Please note, the wheels below do not have the number of teeth shown! <br> <svg-gear id=\"${idDivIntro}\"></svg-gear>`, 'numbers', 'Help')\n } else {\n txtIntro += '\\\\\\\\ \\\\textit{Attention, the wheels below do not have the number of teeth in the statement!} \\\\\\\\ \\\\Gears[Color=white,Unit=1mm]{1/24, 1/9}'\n }\n\n this.introduction = lampeMessage({\n titre: 'Gear arithmetic',\n texte: txtIntro,\n couleur: 'numbers'\n })\n\n for (let i = 0, texte, texteCorr, k, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n typesDeQuestions = listeTypeDeQuestions[i]\n\n let nbDentsr1\n let nbDentsr2\n let txtPopup = `Given two integers a and b, when the smallest common multiple of $a$ and $b$ is worth $a \\\\times b$ ${context.isHtml ? '' : '\\\\\\\\'}( $ppcm(a,b)=a\\\\times b$ ), we say that`\n if (context.isHtml) {\n txtPopup += '<b>the numbers a and b are relatively prime.</b>'\n } else {\n txtPopup += '$\\\\textbf{the numbers a and b are relatively prime}$.'\n }\n let txtPopupBis = `Given two integers a and b, when the largest divisor common to $a$ and $b$ is worth $1$ ${context.isHtml ? '' : '\\\\\\\\'} ( $gcd(a,b)=1$ ), we say that`\n if (context.isHtml) {\n txtPopupBis += '<b>the numbers a and b are relatively prime.</b>'\n } else {\n txtPopupBis += '$\\\\textbf{the numbers a and b are relatively prime}$.'\n }\n let txtPopupTer = 'Given two integers a and b, when $a$ and $b$ have no other common divisor than $1$, we say that'\n if (context.isHtml) {\n txtPopupTer += '<b>the numbers a and b are relatively prime.</b>'\n } else {\n txtPopupTer += '$\\\\textbf{the numbers a and b are relatively prime}$.'\n }\n\n switch (typesDeQuestions) {\n case 1:\n { // avec de petits nombres on calcule les mutliples\n nbDentsr1 = randint(5, 30)\n nbDentsr2 = randint(5, 30, nbDentsr1)\n texte = `Wheel n$\\\\degree$1 has $${nbDentsr1}$ teeth and wheel n$\\\\degree$2 has $${nbDentsr2}$ teeth.`\n texte += '<br>' + numAlpha(0) + ` Write the list of multiples of $${nbDentsr1}$ and $${nbDentsr2}$ until you find a common multiple.`\n if (ppcm(nbDentsr1, nbDentsr2) === (nbDentsr1 * nbDentsr2)) {\n texte += `<br>Justify that ${nbDentsr1} and ${nbDentsr2} are`\n texte += katexPopup2(\n numeroExercice + 1,\n 1,\n `prime numbers among themselves${context.isHtml ? '?' : ''}`,\n 'Definition from the least common multiple',\n `${context.isHtml ? '<br>' : '\\\\\\\\'} ${txtPopup}`\n )\n }\n texte += context.isHtml ? '' : '?'\n texte += '<br>' + numAlpha(1) + ' Deduce the number of revolutions of each wheel before returning to their initial position.'\n texteCorr = numAlpha(0) + ` List of first multiples of $${nbDentsr1}$: <br>`\n // we will make sure to always have a number of multiples multiple of 5\n let nbMarge = 5 - (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1) % 5\n let kMax = (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 + nbMarge)\n for (let k = 1; k < kMax + 1; k++) {\n texteCorr += `$${k}\\\\times${nbDentsr1} =`\n if (k === (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1)) {\n texteCorr += miseEnEvidence(texNombre(k * nbDentsr1))\n texteCorr += '$ ;'\n } else {\n texteCorr += `${texNombre(k * nbDentsr1)}$ ;`\n }\n if (k % 5 === 0) {\n texteCorr += '<br>'\n }\n }\n texteCorr += '$\\\\ldots$'\n texteCorr += '<br>'\n texteCorr += ` List of first multiples of $${nbDentsr2}$: <br>`\n // we will make sure to always have a number of multiples multiple of 5\n nbMarge = 5 - (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2) % 5\n kMax = (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2 + nbMarge)\n for (let k = 1; k < kMax + 1; k++) {\n texteCorr += `$${k}\\\\times${nbDentsr2} =`\n if (k === (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2)) {\n texteCorr += miseEnEvidence(texNombre(k * nbDentsr2))\n texteCorr += '$ ;'\n } else {\n texteCorr += `${texNombre(k * nbDentsr2)}$ ;`\n }\n if (k % 5 === 0) {\n texteCorr += '<br>'\n }\n }\n texteCorr += '$\\\\ldots$'\n texteCorr += '<br>'\n if (ppcm(nbDentsr1, nbDentsr2) === (nbDentsr1 * nbDentsr2)) {\n texteCorr += '$ppcm(' + nbDentsr1 + ';' + nbDentsr2 + ')=' + nbDentsr1 + '\\\\times' + nbDentsr2 + `$ therefore $${nbDentsr1}$ and $${nbDentsr2}$ are`\n texteCorr += katexPopup2(\n numeroExercice + 2,\n 1,\n `prime numbers among themselves${context.isHtml ? '.' : ''}`,\n 'Definition from the least common multiple',\n `${context.isHtml ? '<br>' : '\\\\\\\\'} ${txtPopup}`\n )\n }\n texteCorr += context.isHtml ? '' : '.'\n texteCorr += '<br>'\n texteCorr += numAlpha(1) + ` The smallest multiple common to $${nbDentsr1}$ and $${nbDentsr2}$ is therefore worth $${ppcm(nbDentsr1, nbDentsr2)}$.<br>It is therefore sufficient for each wheel to turn $${ppcm(nbDentsr1, nbDentsr2)}$ teeth to make a whole number of revolutions and thus return to its initial position.<br>In fact, each wheel must rotate so that the total number of teeth used is a multiple of its number of teeth or at least $${texNombre(ppcm(nbDentsr1, nbDentsr2))}$ teeth.`\n texteCorr += `<br> This corresponds to $(${ppcm(nbDentsr1, nbDentsr2)}\\\\text{ teeth})\\\\div (${nbDentsr1}\\\\text{ teeth/revolution}) = ${ppcm(nbDentsr1, nbDentsr2) / nbDentsr1}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += 'for wheel n$\\\\degree$1.'\n texteCorr += `<br>This corresponds to $(${ppcm(nbDentsr1, nbDentsr2)}\\\\text{ teeth})\\\\div (${nbDentsr2}\\\\text{ teeth/revolution}) = ${ppcm(nbDentsr1, nbDentsr2) / nbDentsr2}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += 'for wheel n$\\\\degree$2.'\n }\n break\n case 2: // avec de plus grands nombre, c'est mieux de décomposer en facteurs premiers\n if (this.sup) {\n nbDentsr1 = randint(51, 100)\n nbDentsr2 = randint(51, 100, nbDentsr1)\n while (nbDentsr2 % nbDentsr1 === 0 || nbDentsr1 % nbDentsr2 === 0) {\n nbDentsr2 = randint(51, 100, nbDentsr1)\n }\n } else {\n nbDentsr1 = randint(31, 80)\n nbDentsr2 = randint(31, 80, nbDentsr1)\n while (nbDentsr2 % nbDentsr1 === 0 || nbDentsr1 % nbDentsr2 === 0) {\n nbDentsr2 = randint(51, 100, nbDentsr1)\n }\n }\n\n texte = `Wheel n$\\\\degree$1 has $${nbDentsr1}$ teeth and wheel n$\\\\degree$2 has $${nbDentsr2}$ teeth.`\n texte += '<br>' + numAlpha(0) + ` Decompose $${nbDentsr1}$ and $${nbDentsr2}$ into product of prime factors.`\n if (ppcm(nbDentsr1, nbDentsr2) === (nbDentsr1 * nbDentsr2)) {\n texte += `<br>Justify that ${nbDentsr1} and ${nbDentsr2} are`\n texte += katexPopup2(\n numeroExercice + 3,\n 1,\n `prime numbers among themselves${context.isHtml ? '?' : ''}`,\n 'Three equivalent definitions to choose from',\n `<br>- ${txtPopup} ${context.isHtml ? '<br>-' : '\\\\\\\\-'} ${txtPopupBis} ${context.isHtml ? '<br>-' : '\\\\\\\\-'} ${txtPopupTer}`\n )\n }\n texte += context.isHtml ? '' : '?'\n texte += '<br>' + numAlpha(1) + ' Deduce the number of revolutions of each wheel before returning to their initial position.'\n texteCorr = 'For a higher number of teeth, it is more convenient to use product decompositions of prime factors.'\n texteCorr += '<br>' + numAlpha(0) + ` Decomposition of $${nbDentsr1}$ into product of prime factors: $${nbDentsr1} = ${decompositionFacteursPremiers(nbDentsr1)}$.`\n texteCorr += `<br> Decomposition of $${nbDentsr2}$ into product of prime factors: $${nbDentsr2} = ${decompositionFacteursPremiers(nbDentsr2)}$.`\n texteCorr += '<br>'\n if (ppcm(nbDentsr1, nbDentsr2) === (nbDentsr1 * nbDentsr2)) {\n texteCorr += 'Proposal of three valid corrections for the deduction: <br>'\n texteCorr += 'Correction proposal 1: <br>'\n\n texteCorr += `According to the previous calculations, $ppcm(${nbDentsr1},${nbDentsr2})= ${decompositionFacteursPremiers(ppcm(nbDentsr1, nbDentsr2))}$.<br>`\n\n texteCorr += `So $${nbDentsr1}$ and $${nbDentsr2}$ are`\n texteCorr += katexPopup2(\n numeroExercice + 4,\n 1,\n `prime numbers among themselves${context.isHtml ? '.' : ''}`,\n 'Definition from the least common multiple',\n `${context.isHtml ? '<br>' : '\\\\\\\\'} ${txtPopup}`\n )\n }\n texteCorr += context.isHtml ? '' : '.'\n if (pgcd(nbDentsr1, nbDentsr2) === 1) {\n texteCorr += '<br>Correction proposal 2: <br>'\n\n texteCorr += `According to the previous calculations, $gcd(${nbDentsr1},${nbDentsr2})= ${pgcd(nbDentsr1, nbDentsr2) === 1 ? 1 : ''} ${decompositionFacteursPremiers(pgcd(nbDentsr1, nbDentsr2))}$.<br>`\n texteCorr += `So $${nbDentsr1}$ and $${nbDentsr2}$ are`\n texteCorr += katexPopup2(\n numeroExercice + 5,\n 1,\n `prime numbers among themselves${context.isHtml ? '.' : ''}`,\n 'Definition from the greatest common divisor',\n `${context.isHtml ? '<br>' : '\\\\\\\\'} ${txtPopupBis}`\n )\n }\n texteCorr += context.isHtml ? '' : '.'\n if (pgcd(nbDentsr1, nbDentsr2) === 1) {\n texteCorr += '<br>Correction proposal 3: <br>'\n\n texteCorr += `According to the previous calculations, the only divisor common to $${nbDentsr1}$ and $${nbDentsr2}$ is worth $1$.<br>`\n texteCorr += `So $${nbDentsr1}$ and $${nbDentsr2}$ are`\n texteCorr += katexPopup2(\n numeroExercice + 6,\n 1,\n `prime numbers among themselves${context.isHtml ? '.' : ''}`,\n 'Definition from the intersection of common divisors',\n `${context.isHtml ? '<br>' : '\\\\\\\\'} ${txtPopupTer}`\n )\n }\n texteCorr += context.isHtml ? '' : '.'\n texteCorr += '<br>'\n texteCorr += numAlpha(1) + ` To find the initial position, each wheel must rotate so that the total number of teeth used is a multiple of its number of teeth.<br>Or, thanks to the previous decompositions, at least $${decompositionFacteursPremiers(ppcm(nbDentsr1, nbDentsr2))} = ${ppcm(nbDentsr1, nbDentsr2)}$ teeth.`\n texteCorr += `<br> This corresponds to $(${texNombre(ppcm(nbDentsr1, nbDentsr2))}\\\\text{ teeth})\\\\div (${nbDentsr1}\\\\text{ teeth/revolution}) = ${ppcm(nbDentsr1, nbDentsr2) / nbDentsr1}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += 'for wheel n$\\\\degree$1.'\n texteCorr += `<br> This corresponds to $(${texNombre(ppcm(nbDentsr1, nbDentsr2))}\\\\text{ teeth})\\\\div (${nbDentsr2}\\\\text{ teeth/revolution}) = ${ppcm(nbDentsr1, nbDentsr2) / nbDentsr2}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += 'for wheel n$\\\\degree$2.'\n break\n case 3: // déterminer le nombre de dents d'a wheel knowing'autre et le nombre de tours nécessaires à la re-synchro\n if (this.sup) k = choice([2, 3, 4, 5, 6])\n else k = choice([2, 3])\n nbDentsr1 = randint(5, 15)\n nbDentsr2 = randint(5, 80, nbDentsr1)\n nbDentsr1 *= k\n nbDentsr2 *= k\n texte = `Wheel n$\\\\degree$2 now has $${nbDentsr2}$ teeth.`\n texte += ` Determine the number of teeth of the wheel n$\\\\degree$1 which would make $${ppcm(nbDentsr1, nbDentsr2) / nbDentsr1}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 === 1) {\n texte += ' round'\n } else {\n texte += ' towers '\n }\n texte += ` while the wheel n$\\\\degree$2 makes it $${ppcm(nbDentsr1, nbDentsr2) / nbDentsr2}$.`\n texteCorr = `Since the wheel n$\\\\degree$2, which has $${nbDentsr2}$ teeth, makes $${ppcm(nbDentsr1, nbDentsr2) / nbDentsr2}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr2 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += `, this represents $${texNombre(ppcm(nbDentsr1, nbDentsr2))}$ teeth.`\n texteCorr += `<br>The wheel n$\\\\degree$1 must therefore also rotate by $${texNombre(ppcm(nbDentsr1, nbDentsr2))}$ teeth, this in $${ppcm(nbDentsr1, nbDentsr2) / nbDentsr1}$`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += '.'\n texteCorr += `<br> We therefore obtain $(${texNombre(ppcm(nbDentsr1, nbDentsr2))}\\\\text{ teeth})\\\\div (${ppcm(nbDentsr1, nbDentsr2) / nbDentsr1}\\\\text{`\n if (ppcm(nbDentsr1, nbDentsr2) / nbDentsr1 === 1) {\n texteCorr += ' round'\n } else {\n texteCorr += ' towers '\n }\n texteCorr += `}) = ${nbDentsr1} \\\\text{ teeth/revolution}.$`\n texteCorr += `<br>The wheel n$\\\\degree$1 therefore has $${nbDentsr1}$ teeth.`\n break\n }\n\n if (this.questionJamaisPosee(i, nbDentsr1, nbDentsr2)) { // Si la question n'a jamais été posée, on en créé une autre\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n i++\n }\n cpt++\n }\n\n listeQuestionsToContenu(this)\n }\n}\n"],"names":["titre","dateDeModifImportante","uuid","ref","PpcmEngrenages","Exercice","context","numEx","numeroExercice","typesDeQuestions","modalPdf","listeTypeDeQuestions","combinaisonListesSansChangerOrdre","txtIntro","idDivIntro","svgEngrenages","warnMessage","lampeMessage","i","texte","texteCorr","k","cpt","nbDentsr1","nbDentsr2","txtPopup","txtPopupBis","txtPopupTer","randint","numAlpha","ppcm","katexPopup2","nbMarge","kMax","miseEnEvidence","texNombre","decompositionFacteursPremiers","pgcd","choice","listeQuestionsToContenu"],"mappings":"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"}