HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/3A11-FEH71rPh.js.map
{"version":3,"file":"3A11-FEH71rPh.js","sources":["../../src/exercices/3e/3A11.js"],"sourcesContent":["import { combinaisonListesSansChangerOrdre } from '../../lib/outils/arrayOutils'\nimport { warnMessage } from '../../lib/format/message.js'\nimport { modalPdf } from '../../lib/outils/modales.js'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport { decompositionFacteursPremiersArray, premiersEntreBornes } from '../../lib/outils/primalite'\nimport { texNombre } from '../../lib/outils/texNombre'\nimport Exercice from '../deprecatedExercice.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nexport const titre = 'Make a fraction irreducible'\n\n/**\n * Fractions irréductibles\n * @author Sébastien Lozano\n * Référence 3A11\n */\nexport const uuid = 'a6667'\nexport const ref = '3A11'\nexport default function FractionsIrreductibles () {\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 = 'Make a fraction and its inverse irreducible from decompositions into the product of prime factors.'\n  // this.setpoint += `<br>`;\n  context.isHtml ? this.spacing = 4 : this.spacing = 2\n  context.isHtml ? this.spacingCorr = 4 : this.spacingCorr = 2\n  this.nbQuestions = 1\n  // this.DetailedCorrectionAvailable = true;\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.listePackages = 'bclogo'\n  this.sup = true\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-3A12.pdf', 'Memory aid on functions (Sébastien Lozano)', 'Memory aid')\n      // this.buttonHelp += modalVideo('conteMathsNombresPremiers','https://coopmaths.fr/videos/LesNombresPremiers.mp4','Little mathematical tale','Intro Video');\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    // let AvailableQuestionTypes = [1,2,3,4];\n    const typesDeQuestionsDisponibles = [1]\n    const listeTypeDeQuestions = combinaisonListesSansChangerOrdre(typesDeQuestionsDisponibles, this.nbQuestions)\n\n    this.introduction = warnMessage('At the question' + numAlpha(3, true) + ', a judicious and reasoned observation can save time!', 'numbers', 'Help')\n\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      typesDeQuestions = listeTypeDeQuestions[i]\n\n      let nb1 // nbre 1\n      let nb2 // nbre 2\n\n      // we set the choice table\n      const candidatsPremiersCommuns = this.sup ? [2, 3, 5] : premiersEntreBornes(2, 13) // tableau des candidats premiers communs\n      // we fix the number of common prime divisors\n      const nbDivPremCommuns = this.sup ? 3 : 4 // nombre de diviseurs premiers communs\n      // we initialize the table of common prime divisors\n      const premiersCommuns = [] // tableau des diviseurs premiers communs\n      // we initialize the rank table\n      const r = [] // tableau pour le choix des rangs des diviseurs premiers communs\n      // we initialize the table of ranks already chosen\n      const rExclus = [] // tableau pour la boucle de creation de r\n      // we complete the table of ranks of the ranks of the chosen prime divisors\n      for (let k = 0; k < nbDivPremCommuns; k++) {\n        for (let m = 0; m < k; m++) {\n          rExclus.push(r[m])\n        }\n        r[k] = randint(0, candidatsPremiersCommuns.length - 1, rExclus)\n      }\n      // we complete the table of common prime divisors\n      for (let k = 0; k < nbDivPremCommuns; k++) {\n        premiersCommuns.push(candidatsPremiersCommuns[r[k]])\n      }\n      // we initialize and complete the table of multiplicities of common prime divisors\n      const multiplicitesPremiersCommuns = [] // tableau des multiplicités des diviseurs premiers communs\n      let zeroDejaDonne = false\n      for (let k = 0; k < nbDivPremCommuns; k++) {\n        const multipliciteHAsard = zeroDejaDonne ? randint(1, 2) : randint(0, 2)\n        if (multipliciteHAsard === 0) zeroDejaDonne = true\n        multiplicitesPremiersCommuns.push(multipliciteHAsard)\n      }\n      // we delete the prime divisors of multiplicity 0 and their multiplicity\n      let idx = multiplicitesPremiersCommuns.indexOf(0)\n      while (idx !== -1) {\n        premiersCommuns.splice(idx, 1)\n        multiplicitesPremiersCommuns.splice(idx, 1)\n        idx = multiplicitesPremiersCommuns.indexOf(0)\n      }\n      // we initialize the table of divisors of the first and second numbers with the common prime divisors\n      const tabNb1 = [] // tableau pour les diviseurs de nb1\n      const tabNb2 = [] // tableau pour les diviseurs de nb2\n      for (let k = 0; k < premiersCommuns.length; k++) {\n        tabNb1[k] = premiersCommuns[k]\n        tabNb2[k] = premiersCommuns[k]\n      }\n      // we initialize the multiplicity tables, they are the same but we could want them to be different\n      const multiplicitesNb1 = []\n      const multiplicitesNb2 = []\n      for (let k = 0; k < premiersCommuns.length; k++) {\n        multiplicitesNb1[k] = multiplicitesPremiersCommuns[k]\n        multiplicitesNb2[k] = multiplicitesPremiersCommuns[k]\n      }\n      // we add a distinct prime factor for each number smaller than myBorne\n      const maBorne = this.sup ? 13 : 30\n      const rEx = randint(0, premiersEntreBornes(2, maBorne).length - 1) // pour exlcure le rang de nb1\n      const nb1Dist = premiersEntreBornes(2, maBorne)[rEx] // diviseur unique du premier nombre\n      const nb2Dist = premiersEntreBornes(2, maBorne)[randint(0, premiersEntreBornes(2, maBorne).length - 1, rEx)] // diviseur unique du deuxième nombre\n      // we add nb1_dist, nb2_dist in the tables of the prime divisors of the first and second numbers\n      // nb1\n      let bool = false\n      let n = 0\n      while (n < tabNb1.length && bool !== true) {\n        if (nb1Dist === tabNb1[n]) { // si le diviseur premier est déjà présent on incrémente sa multiplicité\n          multiplicitesNb1[n]++\n          bool = true\n        }\n        n++\n      }\n      // we test the output value of bool and add the new value if necessary\n      if (!bool) { // il n'is not present we'ajoute avec la multipplicité 1\n        tabNb1.push(nb1Dist)\n        multiplicitesNb1.push(1)\n        bool = true\n      }\n      // nb2\n      bool = false\n      n = 0\n      while (n < tabNb2.length && !bool) {\n        if (nb2Dist === tabNb2[n]) { // si le diviseur premier est déjà présent on incrémente sa multiplicité\n          multiplicitesNb2[n]++\n          bool = true\n        }\n        n++\n      }\n      // we test the output value of bool and add the new value if necessary\n      if (!bool) { // il n'is not present we'ajoute avec la multipplicité 1\n        tabNb2.push(nb2Dist)\n        multiplicitesNb2.push(1)\n        bool = true\n      }\n      // we create an associative table from the two tables tab_ni and multiplicites_ni\n      const tabPremMultNb1 = []\n      for (let k = 0; k < tabNb1.length; k++) {\n        tabPremMultNb1[k] = { prem: tabNb1[k], mult: multiplicitesNb1[k] }\n      }\n      const tabPremMultNb2 = []\n      for (let k = 0; k < tabNb2.length; k++) {\n        tabPremMultNb2[k] = { prem: tabNb2[k], mult: multiplicitesNb2[k] }\n      }\n      // we arrange according to first ascending\n      tabPremMultNb1.sort(function (a, b) {\n        return a.prem > b.prem\n      })\n      tabPremMultNb2.sort(function (a, b) {\n        return a.prem > b.prem\n      })\n      // we initialize nb1 and nb2 and calculate them from the tables\n      nb1 = 1\n      for (let k = 0; k < tabNb1.length; k++) {\n        nb1 = nb1 * tabPremMultNb1[k].prem ** tabPremMultNb1[k].mult\n      }\n      nb2 = 1\n      for (let k = 0; k < tabNb2.length; k++) {\n        nb2 = nb2 * tabPremMultNb2[k].prem ** tabPremMultNb2[k].mult\n      }\n\n      switch (typesDeQuestions) {\n        case 1: // décomposition de A\n          texte = numAlpha(0) + ` Decompose $A = ${texNombre(nb1)}$ into a product of prime factors.`\n          texteCorr = numAlpha(0) + ' The prime product decomposition of $A ='\n          switch (tabPremMultNb1[0].mult) {\n            case 1:\n              texteCorr += `${tabPremMultNb1[0].prem}`\n              break\n            default:\n              texteCorr += `${tabPremMultNb1[0].prem}^{${tabPremMultNb1[0].mult}}`\n              break\n          }\n          for (let k = 1; k < tabNb1.length; k++) {\n            switch (tabPremMultNb1[k].mult) {\n              case 1:\n                texteCorr += `\\\\times${tabPremMultNb1[k].prem}`\n                break\n              default:\n                texteCorr += `\\\\times${tabPremMultNb1[k].prem}^{${tabPremMultNb1[k].mult}}`\n                break\n            }\n          }\n          texteCorr += '$.'\n          // break;\n          // box 2: // decomposition of B\n          texte += '<br>' + numAlpha(1) + ` Decompose $B = ${texNombre(nb2)}$ into a product of prime factors.`\n          texteCorr += '<br>' + numAlpha(1) + 'The prime product decomposition of $B ='\n          switch (tabPremMultNb2[0].mult) {\n            case 1:\n              texteCorr += `${tabPremMultNb2[0].prem}`\n              break\n            default:\n              texteCorr += `${tabPremMultNb2[0].prem}^{${tabPremMultNb2[0].mult}}`\n              break\n          }\n          for (let k = 1; k < tabNb2.length; k++) {\n            switch (tabPremMultNb2[k].mult) {\n              case 1:\n                texteCorr += `\\\\times${tabPremMultNb2[k].prem}`\n                break\n              default:\n                texteCorr += `\\\\times${tabPremMultNb2[k].prem}^{${tabPremMultNb2[k].mult}}`\n                break\n            }\n          }\n          texteCorr += '$.'\n          // break;\n          // box 3: // reduction of A on B\n          texte += '<br>' + numAlpha(2) + ` Make the fraction $\\\\dfrac{A}{B} = \\\\dfrac{${texNombre(nb1)}}{${texNombre(nb2)}}$ irreducible`\n          if (context.isHtml) {\n            texte += ' using the decompositions obtained in ' + numAlpha(0) + ' and at ' + numAlpha(1, true) + '.'\n          } else {\n            texte += ' using questions' + numAlpha(0) + ' and ' + numAlpha(1, true) + '.'\n          }\n          texteCorr += '<br>' + numAlpha(2) + ` $\\\\dfrac{A}{B} = \\\\dfrac{${texNombre(nb1)}}{${texNombre(nb2)}} =`\n          texteCorr += '\\\\dfrac{'\n          texteCorr += '\\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[0] + '}'\n          for (let k = 1; k < decompositionFacteursPremiersArray(nb1 / nb1Dist).length; k++) {\n            texteCorr += '\\\\times \\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[k] + '}'\n          }\n          texteCorr += `\\\\times ${nb1Dist}}{`\n          texteCorr += '\\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[0] + '}'\n          for (let k = 1; k < decompositionFacteursPremiersArray(nb1 / nb1Dist).length; k++) {\n            texteCorr += '\\\\times \\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[k] + '}'\n          }\n          texteCorr += `\\\\times ${nb2Dist}} =`\n          texteCorr += `\\\\dfrac{${nb1Dist}}{${nb2Dist}}$`\n          // break;\n          // box 4: // reduction of B on A\n          texte += '<br>' + numAlpha(3) + ` Make the fraction $\\\\dfrac{B}{A} = \\\\dfrac{${texNombre(nb2)}}{${texNombre(nb1)}}$ irreducible`\n          if (context.isHtml) {\n            texte += ' using the decompositions obtained in' + numAlpha(0) + 'and at' + numAlpha(1, true) + '.'\n          } else {\n            texte += ' using questions' + numAlpha(0) + ' and ' + numAlpha(1, true) + '.'\n          }\n          texteCorr += '<br>' + numAlpha(3) + ` $\\\\dfrac{B}{A}$ is the inverse of $\\\\dfrac{A}{B}$ so $\\\\dfrac{B}{A} = \\\\dfrac{${texNombre(nb2)}}{${texNombre(nb1)}} =`\n          texteCorr += '\\\\dfrac{'\n          texteCorr += '\\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[0] + '}'\n          for (let k = 1; k < decompositionFacteursPremiersArray(nb1 / nb1Dist).length; k++) {\n            texteCorr += '\\\\times \\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[k] + '}'\n          }\n          texteCorr += `\\\\times ${nb2Dist}}{`\n          texteCorr += '\\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[0] + '}'\n          for (let k = 1; k < decompositionFacteursPremiersArray(nb1 / nb1Dist).length; k++) {\n            texteCorr += '\\\\times \\\\cancel{' + decompositionFacteursPremiersArray(nb1 / nb1Dist)[k] + '}'\n          }\n          texteCorr += `\\\\times ${nb1Dist}} =`\n          texteCorr += `\\\\dfrac{${nb2Dist}}{${nb1Dist}}$.`\n          context.isHtml ? texteCorr += '<hr>' : texteCorr += '\\\\by \\\\hrulefill \\\\by'\n          texteCorr += ` We can judiciously note that $\\\\dfrac{B}{A}$ is the inverse of $\\\\dfrac{A}{B}$ so that making the fraction $\\\\dfrac{B}{A}$ irreducible amounts to to invert the irreducible fraction obtained for $\\\\dfrac{A}{B}$ to the ${numAlpha(2, true)}.`\n          context.isHtml ? texteCorr += '<hr>' : texteCorr += '\\\\by \\\\hrulefill \\\\by'\n          // break;\n          // box 5: // calculate the product A/B x B/A and reduce. Noticed?\n          // text += `<br>`+numAlpha(4)+` How much to calculate the product of $\\\\dfrac{A}{B} = \\\\dfrac{${texNombre(nb1)}}{${texNombre(nb2)}}$ and $\\\\dfrac{ B}{A} = \\\\dfrac{${texNombre(nb2)}}{${texNombre(nb1)}}$.`;\n          // text += `<br>Give the result as an irreducible fraction.`\n          // text += `<br>`+numAlpha(4)+` Note?`\n          // textCorr += `<br>`+numAlpha(4)+' corr type 5';\n          break\n      }\n\n      if (this.listeQuestions.indexOf(texte) === -1) { // 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    listeQuestionsToContenu(this)\n  }\n  this.besoinFormulaireCaseACocher = ['“Simple” decomposition']\n}\n"],"names":["titre","uuid","ref","FractionsIrreductibles","Exercice","context","numeroExercice","typesDeQuestions","modalPdf","listeTypeDeQuestions","combinaisonListesSansChangerOrdre","warnMessage","numAlpha","i","texte","texteCorr","cpt","nb1","nb2","candidatsPremiersCommuns","premiersEntreBornes","nbDivPremCommuns","premiersCommuns","r","rExclus","k","m","randint","multiplicitesPremiersCommuns","zeroDejaDonne","multipliciteHAsard","idx","tabNb1","tabNb2","multiplicitesNb1","multiplicitesNb2","maBorne","rEx","nb1Dist","nb2Dist","bool","n","tabPremMultNb1","tabPremMultNb2","a","b","texNombre","decompositionFacteursPremiersArray","listeQuestionsToContenu"],"mappings":"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"}