CSDN的C1考試,質(zhì)數(shù)問題,一不小心就錯(cuò)失得分
2021年8月22號(hào),懷著忐忑的心參加了CSDN的C1考試,為自己能順利通過,真沒想到卻栽在了質(zhì)數(shù)大題上。錯(cuò)失10分真的好可惜。
現(xiàn)在回顧一下這道題目。
題目要求:
1、生成2個(gè)1~100的隨機(jī)整數(shù)。(是1~50 還是 1~100 有點(diǎn)記不清楚了)
2、打印出這2個(gè)整數(shù)的所有質(zhì)數(shù)。
這道題主要是考查我們對(duì)質(zhì)數(shù)、JS中Math中的相關(guān)方法的理解
第一:
什么是質(zhì)數(shù)?
能被1及自身整除的數(shù)為質(zhì)數(shù)
第二:
與本題相關(guān)的Math方法有哪些?
Math.random()? 隨機(jī)數(shù)生成方法
Math.floor()? 生成的隨機(jī)數(shù)按下取整。如50.62 ?結(jié)果為 50? ; -50.62 ?結(jié)果為 -51
Math.ceil()? 生成的隨機(jī)數(shù)按上取整。如50.62 ?結(jié)果為 51 ; -50.62 ?結(jié)果為 -50
講真的這道題目真不難,考試時(shí)我的答案是:
var a1 = Math.floor(Math.random() * 100)console.log("====" + a1)var a2 = Math.floor(Math.random() * 100)console.log("====" + a2)if(a1 > a2){console.log(a1 + "大")}var arr1 = check(a1)console.log(arr1)var arr2 = check(a2)console.log(arr2)var arr = arr1.concat(arr2)console.log(arr)function check(obj) {var arr = []var count = 0for (var i = 2; i< obj; i++){for(var j = 2; j<=obj; j++){if(obj % j === 0){count++}}if(count === 2){arr.push(i)}count = 0}return arr}
細(xì)心的同學(xué)肯定已經(jīng)看出上面的問題了,
考試完畢后,我重新優(yōu)化了一下:
var a1 = Math.floor(Math.random() * 100)console.log("====" + a1)var a2 = Math.floor(Math.random() * 100)console.log("====" + a2)if(a1 > a2){console.log(a1 + "大")}var arr1 = check(a1)console.log(arr1)var arr2 = check(a2)console.log(arr2)var arr = arr1.concat(arr2)console.log(arr)function check(obj) {var arr = []var count = 0for (var i = 2; i< obj; i++){if(t_check(i)){arr.push(i)}}return arr}function t_check(obj) {for(var j = 2; j<obj; j++){if(obj % j === 0){return false}}return true}
上面是優(yōu)化之后的代碼。?
評(píng)論
圖片
表情
