CSDN的C1考试,质数问题,一不小心就错失得分

共 1622字,需浏览 4分钟

 ·

2021-08-25 14:41

2021年8月22号,怀着忐忑的心参加了CSDN的C1考试,为自己能顺利通过,真没想到却栽在了质数大题上。错失10分真的好可惜。


现在回顾一下这道题目。


题目要求:


1、生成2个1~100的随机整数。(是1~50 还是 1~100 有点记不清楚了)


2、打印出这2个整数的所有质数。


这道题主要是考查我们对质数、JS中Math中的相关方法的理解


第一:


什么是质数?


能被1及自身整除的数为质数


第二:


与本题相关的Math方法有哪些?


Math.random()  随机数生成方法


Math.floor()  生成的随机数按下取整。如50.62  结果为 50  ; -50.62  结果为 -51


Math.ceil()  生成的随机数按上取整。如50.62  结果为 51 ; -50.62  结果为 -50


讲真的这道题目真不难,考试时我的答案是:


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 = 0 for (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}


细心的同学肯定已经看出上面的问题了,


考试完毕后,我重新优化了一下:


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 = 0 for (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}


上面是优化之后的代码。 

浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报