この記事を三行にまとめると
入力された数字がズッカーマン数か判定する入力した数以下のズッカーマン数を抽出
ゼロ除算を回避する
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。
かけ算の合計が0だったら処理を終了するパターン
HTMLとCSS
<div>
<input type="number" id="number">
<button type="button" id="start">検証開始</button>
</div>
<div id="formula"></div>
<div id="result"></div>
<style>
* { font-size: 24px; font-family: 'メイリオ' }
body { text-align: center }
input, button { padding: 5px }
#result { width: 800px; margin: 0 auto }
</style>
入力された数字がズッカーマン数か判定する
number = document.getElementById('number');
start = document.getElementById('start');
formula = document.getElementById('formula');
result = document.getElementById('result');
start.onclick = function() {
num = number.value;
lists = num.split('');
sum = lists.reduce(function(prev, current){
return Number(prev) * Number(current);
});
formula.innerText = lists.join('×') + '=' + sum + '\n';
formula.innerText += num + '÷' + sum + '=' + (num / sum);
result.innerText = (num % sum == 0) ? 'ズッカーマン数です!' : 'ズッカーマン数じゃないです';
}
入力した数以下のズッカーマン数を抽出
start.onclick = function() {
num = number.value;
lists = num.split('');
zuckerman = [];
for(i = 1; i <= num; i++) {
lists = String(i).split('');
sum = lists.reduce(function(prev, current){
return Number(prev) * Number(current);
});
if(i % sum == 0) {
zuckerman.push(i);
}
}
result.innerText = 'ズッカーマン数は' + zuckerman.join(', ');
}
ゼロ除算を回避する
入力した数字に0が含まれていたら処理を終了するパターンstart.onclick = function() {
num = number.value;
lists = num.split('');
if(lists.includes('0')) {
result.innerText = 'ズッカーマン数じゃないです';
return;
}
sum = lists.reduce(function(prev, current){
return Number(prev) * Number(current);
});
formula.innerText = lists.join('×') + '=' + sum + '\n';
formula.innerText += num + '÷' + sum + '=' + (num / sum);
result.innerText = (num % sum == 0) ? 'ズッカーマン数です!' : 'ズッカーマン数じゃないです';
}
かけ算の合計が0だったら処理を終了するパターン
start.onclick = function() {
num = number.value;
lists = num.split('');
sum = lists.reduce(function(prev, current){
return Number(prev) * Number(current);
});
if(sum == 0) {
result.innerText = 'ズッカーマン数じゃないです';
return;
}
formula.innerText = lists.join('×') + '=' + sum + '\n';
formula.innerText += num + '÷' + sum + '=' + (num / sum);
result.innerText = (num % sum == 0) ? 'ズッカーマン数です!' : 'ズッカーマン数じゃないです';
}