JS经典逻辑题
这期接上上期讲,JS经典逻辑题,第二部分
第一题
有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死。
问:每个月的兔子总数为多少?
解决这个问题的思路在于,需要知道一个月份,还有兔子增长的规律。兔子在第一个月和第二个月里都只有一对兔子。
第三个月开始才生了一对,小兔子长到三个月后也开始生兔子,而最开始的兔子会连续生。
<script type="text/javascript">
/*
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
问每个月的兔子总数为多少?
*/
function rabbit() {
// 接受用户输入数据
var num = prompt('请输入想要知道兔子总数的月份:');
//定义每个月的兔子总数
var sum = 0,
//定义第一个月和第二个月的兔子总数
one = 1,
two = 1;
document.write('第' + 1 + '个月,兔子的总数为:' +one + '<br/>');
document.write('第' + 2 + '个月,兔子的总数为:' +two + '<br/>');
for (var i = 3;i <= num;i++) {
sum = one + two;
one = two;
two = sum;
document.write('第' + i + '个月,兔子的总数为:' + sum + '<br/>');
}
}
rabbit();
</script>
第二题
一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3。
编程:找出1000以内的所有完数
解决这个问题的思路在于要先把1000以内所有的数找出来,然后找每个数下面的从1到那个数的所有约数,然后把它们加起来与这个数比较。
<script type="text/javascript">
/*
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3.编程 找出1000以内的所有完数
*/
function perfect() {
document.write('1000以内的完数有:');
// 循环1000以内的数
for (var i = 1; i <= 1000; i++) {
//定义
var sum = 0;
//循环找出i的1-i之间所有的约数
for (var j = 1; j < i;j++) {
if(i % j == 0){
sum = sum + j;
}
}
if(sum == i){
document.write(i +'、');
}
}
}
perfect();
</script>