素数判定について
const sosuu = (num) => { const chk = [...Array(num).keys()].map(i=>{ i++; return num % i === 0 ? 1 : 0 }); return chk.reduce((sum,value)=>sum+value) === 2 ? "素数" : "素数じゃない"; }
引数を1から順番に割り切れるか調べて、0か1の配列返す。
1と自分は絶対割り切れるから、配列の中身全部足して2だったら素数。違ったら素数じゃない。
いけてると思うけど、これ0を入れたらエラーなっちゃうね…。
const sosuu = (num) => [...Array(num).keys()] .map(i=>num % ++i === 0 ? 1 : 0) .filter(value=>value===1) .length === 2 ? "素数" : "素数じゃない";
別に全部足さなくても、filterかけて長さが2だったら素数か。こっちだとエラーは出ません!ついでに繋げてみた!以上!
2022-08-06
読み返してたらflatMap使えばよくない…?って思ったので追記。
const sosuu = (num) => [...Array(num).keys()] .flatMap(i => num % ++i === 0 ? i : []) .length === 2 ? "素数" : "素数じゃない";
一行減っただけ。flatMapの記事はまたいつか…。