// Numbas version: finer_feedback_settings {"name": "Repeated Squaring: Modular Arithmetic", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "Repeated Squaring: Modular Arithmetic", "tags": [], "metadata": {"description": "", "licence": "None specified"}, "statement": "
This question allows you to practice the repeated squaring method which we use to calculate encrypted message values in RSA.
", "advice": "The powers are shown below:
\n$\\var{base} = \\var{base} \\mod \\var{modulus}$,
\n$\\var{base}^2 = \\var{pow2} \\mod \\var{modulus}$,
\n$\\var{base}^4 = \\var{pow2}^2 = \\var{pow4} \\mod \\var{modulus}$,
\n$\\var{base}^8 = \\var{pow4}^2 = \\var{pow8} \\mod \\var{modulus}$,
\n$\\var{base}^16 = \\var{pow8}^2 = \\var{pow16} \\mod \\var{modulus}$,
\n$\\var{base}^32 = \\var{pow16}^2 = \\var{pow32} \\mod \\var{modulus}$.
\nSplit the required power into powers of 2 and then multiply the appropriate values together.
\nIf your power was 59, then you would need to calculate $\\var{base}^{59} = \\var{base}^{32} \\times \\var{base}^{16} \\times \\var{base}^8 \\times \\var{base}^2 \\times \\var{base}^1 \\mod \\var{modulus}$. This would be calculated as:
\n$\\var{pow32} \\times \\var{pow16} \\times \\var{pow8} \\times \\var{pow2} \\times \\var{base} = \\var{fixpow} \\mod \\var{modulus}.$
\n", "rulesets": {}, "extensions": [], "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true, "j": false}, "constants": [], "variables": {"modulus": {"name": "modulus", "group": "Ungrouped variables", "definition": "random(100..200)", "description": "", "templateType": "anything", "can_override": false}, "base": {"name": "base", "group": "Ungrouped variables", "definition": "random(50..80)", "description": "", "templateType": "anything", "can_override": false}, "power": {"name": "power", "group": "Ungrouped variables", "definition": "random(33..63)", "description": "", "templateType": "anything", "can_override": false}, "pow2": {"name": "pow2", "group": "Ungrouped variables", "definition": "mod(base^2,modulus)", "description": "", "templateType": "anything", "can_override": false}, "pow4": {"name": "pow4", "group": "Ungrouped variables", "definition": "mod(pow2^2,modulus)", "description": "", "templateType": "anything", "can_override": false}, "pow8": {"name": "pow8", "group": "Ungrouped variables", "definition": "mod(pow4^2,modulus)", "description": "", "templateType": "anything", "can_override": false}, "pow16": {"name": "pow16", "group": "Ungrouped variables", "definition": "mod(pow8^2,modulus)", "description": "", "templateType": "anything", "can_override": false}, "pow32": {"name": "pow32", "group": "Ungrouped variables", "definition": "mod(pow16^2,modulus)", "description": "", "templateType": "anything", "can_override": false}, "binary": {"name": "binary", "group": "Ungrouped variables", "definition": "tobinary(power)", "description": "", "templateType": "anything", "can_override": false}, "mult": {"name": "mult", "group": "Ungrouped variables", "definition": "mod(mod(mod(if(binary[0]=\"1\",pow32,1)*if(binary[1]=\"1\",pow16,1),modulus)*if(binary[2]=\"1\",pow8,1),modulus)*if(binary[3]=\"1\",pow4,1)*if(binary[4]=\"1\",pow2,1)*if(binary[5]=\"1\",base,1),modulus)", "description": "", "templateType": "anything", "can_override": false}, "fixpow": {"name": "fixpow", "group": "Ungrouped variables", "definition": "mod(base^59,modulus)", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["modulus", "base", "power", "pow2", "pow4", "pow8", "pow16", "pow32", "binary", "mult", "fixpow"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Calculate $\\var{base}^2 \\mod \\var{modulus}$.
", "minValue": "pow2", "maxValue": "pow2", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Calculate $\\var{base}^4 \\mod \\var{modulus}$.
", "minValue": "pow4", "maxValue": "pow4", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Calculate $\\var{base}^8 \\mod \\var{modulus}$.
", "minValue": "pow8", "maxValue": "pow8", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Calculate $\\var{base}^{16} \\mod \\var{modulus}$.
", "minValue": "pow16", "maxValue": "pow16", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Calculate $\\var{base}^{32} \\mod \\var{modulus}$.
", "minValue": "pow32", "maxValue": "pow32", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Use your previous calculations to calculate $\\var{base}^\\var{power} \\mod \\var{modulus}$.
", "minValue": "mult", "maxValue": "mult", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "contributors": [{"name": "Alexander Corner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/5328/"}], "resources": []}]}], "contributors": [{"name": "Alexander Corner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/5328/"}]}