Here is a simple HTML / JavaScript program that can be used for multiplication drill. It should work on all Web browsers. It doesn't depend on any external files, so you can save it on your computer or mobile device, and it will work even if you're not online. I've tested it in Firefox on Linux and in the Chrome & Samsung browsers on my Galaxy S9 phone.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Multiplication Drill</title>
</head>
<body>
<h3>Multiplication Drill</h3>
<input id="aLo" type="number" value="2"><label for="aLo">Low A</label><br>
<input id="aHi" type="number" value="99"><label for="aHi">High A</label><br>
<input id="bLo" type="number" value="2"><label for="bLo">Low B</label><br>
<input id="bHi" type="number" value="99"><label for="bHi">High B</label><br>
<button onclick="reset()">Reset</button>
<br><br>
<div id="main">
<div id="quiz"></div>
<input id="response" type="number" onchange="check(+this.value)">
<label for="response">Answer</label>
<br><br>
<div id="product"></div>
</div>
</body>
<script>
var product = 0, right = 0, wrong = 0;
function ById(s){
return document.getElementById(s);
}
function getRandom(min, max){
return Math.floor(Math.random() * (max - min + 1) + min);
}
function go(){
let aLo = +ById("aLo").value, aHi = +ById("aHi").value,
bLo = +ById("bLo").value, bHi = +ById("bHi").value;
let a = getRandom(aLo, aHi), b = getRandom(bLo, bHi);
product = a * b;
ById("response").value = "";
let out = "Right: " + right + " Wrong: " + wrong + " Total: " + (right + wrong) + "\n\n";
out += a + " × " + b;
ById("quiz").innerText = out;
}
function check(val){
ById("product").innerText = "Previous: " + product;
if (val == product){
right += 1;
ById("main").style = "background-color: #cfc";
}
else{
wrong += 1;
ById("main").style = "background-color: #fcc";
}
go();
}
function reset(){
right = wrong = 0;
ById("main").style = "background-color: #fff";
go();
}
reset();
</script>
</html>
You can simply copy the above code to your device (and save it to a file with the .htm or .html extension), or you can download it from GitHub; on a mobile device you need to view the Desktop site to see the "Download ZIP" button. There's also a live version, which runs on the SageMathCell server, linked in a comment at the bottom of the GitHub page, if you want to test the program or use it without saving it to your device.
The user interface is very basic, it could easily be modified to look a lot prettier, using CSS. And of course various enhancements are possible, eg a timing function.
There's a lot of data to learn if you want to memorise the times tables up to 99 × 99! There are various arithmetic techniques that can be used to speed up two digit multiplication without having to memorise quite so much data. But of course such techniques will be slightly slower.
For example, you can multiply two numbers close to 100 with
$$(100-a)(100-b) = 10000 - 100(a+b) + ab = 100(100-a-b) + ab$$
Similarly,
$$(50+a)(50+b) = 2500 + 50(a+b) + ab = 100(25+(a+b)/2) + ab$$
Another approach is to use the difference of two squares.
$$(u+v)(u-v) = u^2 - v^2$$
Let $$a=u+v, b=u-v$$
Then
$$u=(a+b)/2, v=(a-b)/2$$
Eg,
$$24 × 18 = (21+3)(21-3) = 21^2-3^2 = 441-9 = 432$$
This method works best when $a$ & $b$ have the same parity (both odd or both even).
live versionlink in the comment at the bottom of the page. I'll post an actual answer shortly. – PM 2Ring Jan 18 '22 at 17:24