标签:space tools type ESS tool object number rap mon
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // 15、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 // 加入这输入 90 var a = Number(prompt()); var c = ""; var d = a; for (var b = 2; b <= a; b++) { // 判断a%b === 0; if (a % b === 0 && a !== b) { /* 每次a%b能整除的数存到c里面 90/2=45 45/3=15 15/3=5 5/5=1 c的值就 2 3 3 a!==b 因5/5 a=5 b=5;;所以不会存这个5 为啥要 a !== b 因这样写结果就为 90 = 2*3*3*5* 5后面这个*不对劲了吧 5就要单独输出 */ c += b + "*"; /* 这个a /= b; 相当于每次 a= a / b 90/2=45 ? = 90 / 2 45/3=15 ? = 90 / 2 / 3 15/3=5 ? = 90 / 2 / 3 / 3 5/5=1 ? = 90 / 2 / 3 / 3 / 5 */ a /= b; /* 起始 b = 2 b每次加1 2 3 4 5 6 7 8 9一直到<=a; 但 90 = 2 * 3 * 3 * 5 所以 两 个 3 是怎么得到的 循环第一回 b = 2; 90 / 2 = 45(可以整除) 循环第二回 b = 3 45 / (2 - 1 = 1) (不能整除) 45 / (1 + 1 = 2 ) (不能整除) 45 / (2 + 1 = 3) = 15 (可以整除) 循环第三回 b = 3 15 / (3 - 1 = 2) (不能整除) 15 / (2 + 1 = 3) = 5 (可以整除) 以此类推 但上面有个条件 a !== b 最后是不是 5 / 5 看到此步骤看上面a !== b的解释 */ b--; /* 这里就单独输出a === b 5 / 5 这是 a的值就直接按上面的数值来 也就是循坏第三回的值 15 / (2 + 1 = 3) = 5 */ }else if (a === b){ // 这个c就是存起来a / b 能整除a,b的值(2 3 3 5) c += b; // 满足a === b 就停止 5 / 5 = 1 1不是分解质因数 break; } } console.log(d+"="+c); </script> </body> </html>
JS实现正整数分解质因数。例如:输入90,打印出90=2*3*3*5
标签:space tools type ESS tool object number rap mon
原文地址:https://www.cnblogs.com/JShyf/p/12112641.html