一、for循环
语法:
for(初始化表达式;条件表达式;更新表达式){
语句…
}
执行流程:for循环在执行时,1.先执行初始化表达式,初始化一个变量(只会执行一次);2.执行条件表达式,判断循环是否执行,如果为false,则循环结束;3.如果为true则执行循环体,语句;4.执行更新表达式对变量进行更新;5.重复2的操作。
for循环中的表达式都可以省略不写,除了括号里的两个分号
for循环的练习
练习1,求100以内所有的奇数之和
//获取到100以内的数
//创建一个变量存储结果
let sum = 0;
for (let i = 0; i <= 100; i++) {
// 判断i是否为奇数
if (i % 2 !== 0) {
sum = sum + i;
}
}
console.log(sum);
或者
let sum = 0;
// i+=2就证明取得是奇数了
for (let i = 1; i < 100; i += 2) {
sum += i;
}
console.log(100以内所有的奇数之和${sum}
);
练习2,求100以内所有7的倍数之和,以及个数
// 记录和
let sum_7 = 0;
// 个数
let count = 0;
//获取所有7的倍数
for (let i = 7; i <= 100; i += 7) {
sum_7 += i;
count++;
}
console.log(`100以内所有7的倍数之和${sum_7}以及个数${count}`);
练习3,水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:13 + 53 + 3**3 = 153)。求 1000 以内所有的水仙花数!
思路:i是不是水仙花数,各个位的立方和应该等于它本身,它就是水仙花数(如果i的百位立方+十位立方+个位的立方=i,则说明i是水仙花数),获取i的百位,十位,个位上的数字,现在变量i,已知是一个三位数,求它的百位数字?–一个任意三位数,除以100,然后取整得到的就是它的百位数,依次类推
// 获取到所有的三位数
for (let i = 100; i < 1000; i++) {
// 获取i的百位,十位,个位上的数字
// 获取i的百位的数字
let bai = parseInt(i / 100);
// console.log(`百位数${bai}`);
// 获取i的十位数字
let shi = parseInt((i - bai * 100) / 10)
// console.log(`十位数${shi}`);
// 获取i的个位数字(三位数除以10,其余数就是个位数)
let ge = i % 10;
// console.log(`个位数${ge}`);
if (bai ** 3 + shi ** 3 + ge ** 3 === i) {
// 进入判断,说明i是水仙花数,打印i
console.log(`水仙花数${i}`);
}
}
练习4,获取用户输入的任意数,判断其是否是质数。质数也叫素数,一个数如果只能被1和它本身整除,那么这个数就是质数。1不是质数也不是合数。
创建(输入)一个数,检查num是否质数如果5只能被1和5整除,那么5就是质数,如果5只有1和5两个因数,那么5就是质数,也就是num只能被1和num整除,那么num就是质数,检查num是不是质数,只需检查num有没有1和num以外的因数,如果有,num不是质数,如果没有,num是质数
获取到所有的可能整除num的数,获取到1-num之间的所有数,不包括1和num,检查这些数能否整除num,如果都不能整除num,则num是质数,如果有任意一个能整除num,则不是质数
//创建一个变量,记录检查的状态,默认认为num是质数,通过一个状态来判断是否质数,也就是借助一个中间的变量true或者false的状态
let flag = true;
let num = +prompt("请输入一个数字");
// 获取到1-num之间的所有数,检查这些数能否整除num
for (i = 2; i < num; i++) {
// i现在就是所有可能整除num的数
// 检查num能否被i整除
// 如果num能被i整除,则说明num一定不是质数,进入判断,说明num一定不是质数
if (num % i === 0) {
// 通过默认判断,一开始认为就是true是质数,如果为false了,即不为质数了
flag = false;
}
}
// 输出结果
if (flag) {
// num是质数
alert(`${num}是质数`);
} else {
alert(`${num}不是质数`);
}