// * 输出100-200之间所有的素数 只能被 1 和自身整除的数
// 思路:相反我们只需要找到那个能被其他某个数字整除的数 pass 就可以了
for (var i = 100; i <= 200; i++) {
var age = true; // 假设他为一个素数
for (var j = 2; j < i; j++) { // j 为什么为2 因为这里我们先排除掉 被除数 1
if (i % j == 0) {
// 这里用 i % j == 0 是用来排除掉 被除数自身 这样剩下的就是把能被整除的数给筛选出来 如果某个数字能被整除 那就不为素数直接 pass 掉
age = false;// 修改结果
break; // 终止循环 跳出
}
}
if (age) { // 如果为 true 那么就输出i
console.log(i);
}
}
水仙花数
// * 求100-999之间的水仙花数。abc = a^3+b^3+c^3
for (var i = 100; i <= 999; i++) {
var g = i % 10;
var s = (i % 100 - g) / 10;
var b = parseInt(i / 100);
// var b = Math.floor(i / 100);
if (b * b * b + s * s * s + g * g * g == i){
console.log(i);
}
}
取位方法
var sum = 375;
var g = sum % 10;
var s = (sum % 100 - g) / 10;
var b = Math.floor(sum /100)
console.log(g);
console.log(s);
console.log(b);
计算100!的阶乘
// * 计算100的阶乘 100!
var sum = 1;
for (var i = 100; i >=1; i--) {
sum *= i;
}
console.log(sum);
求1+2!+3!+…+20!的值
// * 求1+2!+3!+…+20!的值
// 思路:求的值为 1~20 直接每个数的阶乘后的之和 利用之前的左直角三角形算法 双重for循环 j<=i
var sum = 0;
for (var i = 1; i <= 20; i++) {
var res = 1; // res 为每个 i 的阶乘
for (var j = 1; j <= i; j++) {
res *= j; // 算出每个 i 的阶乘
}
sum += res; // 每一项 i 的阶乘的总和
}
console.log(sum);
数组案例
作业三 求一组数中的最大值
var add = parseInt(prompt('你想存储多少个数据'));
var arr = [];
for (var i = 0; i < add; i++) {
var age = prompt('第' + i + '个数')
arr[i] = parseInt(age);
}
var max = arr[0];
for (var j = 0; j < arr.length; j++) {
if (arr[j] > max) {
max = arr[j];
}
}
alert('最大值为' + max)
数组分隔成字符串
var arr = ['red', 'green', 'blue', 'pink'];
var lafg = '';
for (var i = 0; i < arr.length; i++) {
lafg += arr[i] + '丨';
}
alert(lafg)
筛选数组
// 方式 1
var arr = [2, 0, 3, 56, 77, 8, 99, 3, 7, 8, 96];
var arr1 = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
arr1[j] = arr[i];
j++;
}
}
console.log(arr1);
// 方式2
var arr = [2, 0, 3, 56, 77, 8, 99, 3, 7, 8, 96];
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
arr1[arr1.length] = arr[i];
}
}
console.log(arr1);
翻转数组
var arr1 = [1, 2, 3, 4, 5, 6];
var arr2 = [];
for (var i = arr1.length - 1; i >= 0; i--) {
arr2[arr2.length] = arr1[i];
}
console.log(arr2);
冒泡排序
// 方式1 数据多了会占内存 不推荐
var arr = [2, 7, 4, 9, 5, 1, 3, 8, 6];
var sum = 0;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) {
sum = arr[i];
arr[i] = arr[j];
arr[j] = sum ;
}
}
}
console.log(arr);
// 方式2 推荐
var arr = [2, 7, 4, 9, 5, 1, 3, 8, 6];
var sum = 0;
for (var i = 0; i < arr.length; i++) { // 外层循环次数
for (var j = 0; j < arr.length - i; j++) {// 里层循环每一次交换次数
if (arr[j] > arr[j + 1]) { // 这里是大于号 是因为前一项与所有项相比 把最大的放在最后 同理 小于号 把最小的放在最后
sum = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = sum;
}
}
}
console.log(arr);
函数
求数组中的最大值
// 求数组中的最大值
var max = add[0];
for (var i = 1; i <=add.length; i++) {
if (add[i] > max) {
max = add[i]
}
}
return max;
封装一个冒泡排序
// 用函数封装一个冒泡排序
function name(add) {
var sum = 0;
for (var i = 0; i < add.length; i++) {
for (var j = 0; j < add.length - i; j++) {
if (add[j] > add[j + 1]) {
sum = add[j];
add[j] = add[j + 1];
add[j + 1] = sum;
}
}
}
return add;
}
// 实参是一个数组传送过去
console.log(name([1, 8, 5, 6, 4, 3, 7, 9, 2]));
// 在外面事件开发里面,我们经常用一个变量来结束 函数的返回结果 使用更简单
// var re = name([1, 8, 5, 6, 4, 3, 7, 9, 2]);
// console.log(re);