用程序来算鸡蛋数

今天无意中在贴吧中看到一个小算法题,题目是:

  • 框里有若干鸡蛋,数量满足以下条件
  • 一个一个拿,刚好拿完
  • 两个两个拿,还剩一个
  • 三个三个拿,刚好拿完
  • 四个四个拿,还剩一个
  • 五个五个拿,还剩一个
  • 六个六个拿,还剩三个
  • 七个七个拿,刚好拿完
  • 八个八个拿,还剩一个
  • 九个九个拿,刚好拿完

求框里一共有多少鸡蛋(原题目说,计算出来的人智商不一般。。。哈哈,对程序员来说,一分钟算出来就算是慢的了吧,赶紧发个评论秀秀优越)

其实这是思路很清晰很简单的一道题,我们写个程序,挨个数,一个数字一个数字的去匹配,只要满足以上九个条件就可以了,源码如下(另外,题目的答案并不是唯一的,而且可能性几乎算是无限的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//源码1,只取最小一个数字
var i = 1;
while (!(
i % 1 == 0
&& i % 2 == 1
&& i % 3 == 0
&& i % 4 == 1
&& i % 5 == 1
&& i % 6 == 3
&& i % 7 == 0
&& i % 8 == 1
&& i % 9 == 0
)) {
i++;
}
console.log(i);
//输出441
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//源码二,可以手动获取第几个满足条件的数字
//根据题目条件计算鸡蛋数量,函数接受一个参数,表示取第几个符合条件的数据(从小到大)
function cacu(num) {
var i = 1;
var flag = 0;
for (; flag < num; i++) {
//条件
if ( i % 1 == 0
&& i % 2 == 1
&& i % 3 == 0
&& i % 4 == 1
&& i % 5 == 1
&& i % 6 == 3
&& i % 7 == 0
&& i % 8 == 1
&& i % 9 == 0
) {
flag += 1;
}
}
// 因为循环会多执行一次,所以
return i-1;
}
console.log(cacu(1));
//输出441

本文永久链接: https://www.mulianju.com/用程序来算鸡蛋数/