function isPrime(num){
if(num % 2 == 0 && num != 2) return false;
for(var i = 3; i * i <= num; i += 2){
if(num % i == 0) return false;
}
return true;
}
// ↑素数かどうかを判定する関数はたったの7行です。ね、簡単でしょう?
function primeFactorizationNotation(num){
var ret = "";
if(num % 2 == 0){
var count = 0;
while(num % 2 == 0){
num /= 2;
count++;
}
ret += 2;
if(count != 1){
ret += " ^ " + count;
}
}
for(var i = 3; i <= num; i += 2){
if(num % i == 0){
var count = 0;
while(num % i == 0){
num /= i;
count++;
}
if(ret != ""){
ret += " x ";
}
if(count == 1){
ret += i;
}else{
ret += i + " ^ " + count;
}
i = 3;
}
}
return ret;
}
var targetNum; // 判定対象の数
var countTotal = 0; // 回答数
var count_corret = 0; // 正答数
function onButtonClick_Judge(event, isYes){
event.preventDefault();
var isCorrect = isYes == isPrime(targetNum);
var result = (isCorrect ? '○' : '×') + ': ';
count_corret += isCorrect ? 1 : 0;
countTotal++;
if(isCorrect == isYes){
result += targetNum + " is a prime number.\n";
}else{
result += targetNum + " = " + primeFactorizationNotation(targetNum) + "\n";
}
updateNum();
updateResult(result);
}
var spanTargetNum;
var textareaResults;
var spanResults;
function updateResult(result){
textareaResults.value = result + textareaResults.value;
spanResults.innerHTML = "正答数/回答数 = " + count_corret + "/" + countTotal + " = " + (Math.round((100 * count_corret / countTotal) * 100) / 100) + "%";
}
var last = [1, 3, 7, 9, 11, 13];
function updateNum(){
var rand1 = Math.floor(Math.random() * 13) + 1;
var rand2 = Math.floor(Math.random() * 14);
var rand3 = last[Math.floor(Math.random() * 6)];
targetNum = Number(String(rand1) + String(rand2) + String(rand3));
updateText();
}
function updateText(){
spanTargetNum.innerHTML = "「" + targetNum + "」は、<br>";
}
window.addEventListener('load', function(){
spanTargetNum = document.getElementById('spanTargetNum');
textareaResults = document.getElementById("textareaResults");
textareaResults.value = "";
spanResults = document.getElementById("spanResults");
targetNum = 1213;
updateText();
});