昨日の問題だと
最大公約数が1や2になってしまうことが多いですので
もう少し大きい数が最大公約数になるようにもんだいを作ります。
ランダムで3つ1ケタの数字を作成し
myppo = Math.floor(Math.random()*9)+1;
mypo1 = Math.floor(Math.random()*9)+1;
mypo2 = Math.floor(Math.random()*9)+1;
そのうち1つを共通にして
残り二つを一つずつ掛けて
問題にします。
myp1 = myppo * mypo1; //1つめ
myp2 = myppo * mypo2; //2つめ
サンプルは
最大公約数
ソースは下
ーーーーーーーーーーーーーーーーーーーーーーーー
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="jq/jquery-1.10.2.min.js"></script>
<title>最大公約数</title>
</head>
<script type="text/javascript"><!--
function mySet(){
myppo = Math.floor(Math.random()*9)+1;
mypo1 = Math.floor(Math.random()*9)+1;
mypo2 = Math.floor(Math.random()*9)+1;
myp1 = myppo * mypo1;
myp2 = myppo * mypo2
document.myForm.myFormQ1.value = myp1; // 1つめ
document.myForm.myFormQ2.value = myp2; // 2つめ
document.myForm.myFormA1.value = ""; // 回答
}
// 入力した答えが正解か不正解かを判定する関数 (答えを入力して、[OK]ボタンを押した時の処理)
function myCheck(){
myQ1 = eval(document.myForm.myFormQ1.value); //
myQ2 = eval(document.myForm.myFormQ2.value); //
myA1 = eval(document.myForm.myFormA1.value); //
p1=myQ1;
p2=myQ2;
function yuk(p1,p2){ //p1.p2の最大公約数を求める
var r=p1%p2;
if(r==0){
return p2;
}else{
return yuk(p2, r);
}
}
uuo=yuk(p1,p2); //最大公約数
if ( myA1 == uuo){ // 答えと入力した値は等しいか(正解か)?
document.ytr001.mes01.value = ("あたり! (^_^)");
}else{
document.ytr001.mes01.value = ("はずれ ! こたえは "+uuo+"です !");
}
mySet(); // 次の問題をセット
}
// -->
</script>
<body>
<!-- 最大公約数の問題フォームを設置 -->
<h1>最大公約数</h1>
<form name="myForm">
さて、もんだいです。
<input type="text" size="2" name="myFormQ1"> と
<input type="text" size="2" name="myFormQ2"> の最大公約数は
<input type="text" size="2" name="myFormA1">
<input type="button" value="OK" onclick="myCheck()">
</form>
<form name="ytr001">
<input type="text" size="100" style="border-style:none;background-color:#FFFFFF;" name="mes01">
</form>
<script type="text/javascript"><!--
mySet(); // 初回の問題をフォームへセット
// --></script>
<br><br><br>
</body>
</html>