1,判断101-200之间有多少个素数?
for (var i = 101; i <= 200; i++) {
for (var j = 2; j <=i; j++) {
if (i % j == 0)
break;
}
if (j == i) {
document.write(` ${i}为素数`);
document.write("<br>");
}
}
for(var i = 101; i < 201; i++){
var result = true; //用来标记当前数字i是否是素数,true代表是
for(var j = 2; j < i; j++){
if(i % j == 0){
result = false;
break;
}
}
if(result){
document.write(`<h5>${i}是一个素数</h5>`);
}
}
document.write(`<hr />`);
2,一个数如果恰好等于它的因子之和,这个数被称为完数。比如6=1+2+3 编程求出1000以内的所有完数
for (var i = 1; i <= 1000; i++) {
var s = 0;
for (var j = 1; j <= Math.floor(i/2); j++) {
if (i % j == 0) {
s = s +j;
}
}
if (i == s) {
document.write(` ${i}恰好等于它的因子之和`);
document.write("<br>");
}
}
3,猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,还不过瘾又多吃了一个。第二天早上又吃了剩下桃子的一半,之后又多吃了一个。以后每天早上都是一样。到第10天时发现只剩下1个桃子,问猴子第一天共摘了多少个桃子?
var i, t = 1;
for (i = 9; i > 0; i--) {
t = 2 * (t + 1);
}
document.write(`第一天共摘了${t}个桃子`);
document.write("<br>");
4,有一对幼兔,幼兔一个月后长成小兔,小兔一个月后长成成兔并生下一对幼兔,问8个月后有多少对兔子,成兔,小兔,幼兔对数分别是多少?
var youtu=1;
var xiaotu=0;
var chengtu=0;
for(var i=1;i<9;i++){
if(i==1){
youtu=1;
xiaotu=0;
chengtu=0;
}
else{
chengtu=chengtu+xiaotu;
xiaotu=youtu;
youtu=chengtu*2;
}
}
document.write(`成兔对数${chengtu}小兔对数${xiaotu}幼兔对数${youtu}`);
document.write("<br>");
5,约瑟夫环(约瑟夫问题):有10个俘虏(以编号1,2,3...10分别表示)围坐在一起。从编号为1的人开始报数,数到3的那个人被拉出去枪毙;他的下一个人又从1开始报数,数到3的那个人又被拉出去枪毙;依此规律重复下去,直到最后一个人,求最后剩下的的那个人的编号,并输出被枪毙人的编号顺序?(经典思考题)
var arr = [1,1,1,1,1,1,1,1,1,1];
var count = 0; //存储当前俘虏报的数字
var life = 10; //存活俘虏的数量
var index = 0; //下标用来标记当前游戏到了第几个人
while(life > 1){
if(arr[index] == 1){
count++;
if(count == 3){
arr[index] = 0;
count = 0;
life--;
document.write(`俘虏编号${index+1}->`);
}
}
index++;
if(index >= arr.length){
index = 0;
}
}
6,
求二维数组中的每一行的最大值和每一列的最小值,并且输出最大值和最小值在二维数组中的下标
for(var i = 0; i < arr1.length; i++){
var temp = arr1[i];
var max = temp[0];
for(var j = 1; j < temp.length; j++){
if(max < temp[j]){
max = temp[j];
}
}
//寻找temp中的最大值
for(var j = 0; j < temp.length; j++){
if(max == temp[j]){
document.write(`<p>最大值为${max},下标为${i}-${j}</p>`);
}
}
}
//求列中最小值
for(var i = 0; i < arr1[0].length; i++){
//获取列中最小的, i代表列标,j代表行标
var min = arr1[0][i];
for(var j = 0; j < arr1.length; j++){
if(arr1[j][i] < min){
min = arr1[j][i];
}
}
//输出最小值的下标
for(var j = 0; j < arr1.length; j++){
if(min == arr1[j][i]){
document.write(`<p>最小值为${min},下标为${j}-${i}</p>`);
}
}
}