找出所有1-100之间7的倍数或包含7的数字

268 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

面试的时候遇到的问题,要求用原声js实现“找出所有1-100之间7的倍数或包含7的数字”这样的需求;实现的时候,可以把数字设为动态的,所以以下代码里就把xxx数放到输入框里,这样就可以随机输入了。

分析:思路还是用遍历数组的思路,对于是否是某某数的倍数,就是遍历到该数的时候,用该数字去除于设定的数字,能否除尽,可以除尽则留下,反之则剔除,具体的实现我就放在注释里面啦

实现方法如下: HTML代码

<input type="text" placeholder="包含" id="num" value="7" /> <button onclick="find()"></button> <br/>
	<span id="result">7</span>
<script>
		// 找出所有1-100之间某个数的倍数或包含指定的某个数的数字
		function find() {
			// 待查找数字的信息
			var con = document.getElementById("num").value;
		
			// 定义数组,保存找到的数
			// var arr = new Array();
			var arr = [];
			// 循环遍历 1 - 100,找出7的倍数或包含7的数字
			for (var i = 1; i <= 100; i++) {
				if (i % con == 0 || contains(i, con)) { // 7的倍数或包含7
					arr.push(i);
				}
			}
			
			// 显示
			document.getElementById("result").innerHTML = arr;
		}
		
		// 判断一个数字(num)中是否包含指定的数字(con)
		// 返回是否包含
		// true:包含数字7
		// false:不包含
		function contains(num, con) {
			while (num != 0) {
				if(num % 10 == con){ // 判断个位数字包含数字7
					return true;
				}
				// 不包含7,则扔掉个位数以便于下次继续判断
				num = Math.floor(num / 10);
			}
			// 循环执行完毕,没有返回,则说明整个数字不包含7
			return false;
		}
	</script>