for循环的应用—— 打印100以内的素数;打印1000以内的完数(一个数自身所有的因数相加等于它本身的数)

本文通过JavaScript代码展示了如何找出100以内的所有素数及1000以内的所有完数,并详细解释了相关算法逻辑。

1>  打印100以内的素数:

<script>
var i ,j;
            for(i = 2;i <= 100;i ++){
                var count = 0;                       //这一步非常重要!每次内循环后归零重新开始
                for(j = 1;j <= i/2;j ++){
                    if(i % j == 0){
                        count ++;
                    }
                }
                if(count > 1){continue;}           //count > 1时不符合,跳出本次循环,进行下一轮循环。
                else{                             // count == 1时才符合条件,因为素数只能整除 1 和它本身,而j <= i/2
                    console.log(i);
                }
            }
</script>

运行结果:

2> 打印1000以内的完数(如:6 的因数有:1、 2、 3; 6 = 1 +2+3;6就是完数!)

代码如下:

<script> 
var i, j, k;
             for(i = 5;i <= 1000;i ++){
                var sum = 0;                         //每次循环结束sum 变为0,进行下一次循环。
                 for(j = 1;j <= i/2;j ++){
                     if(i % j == 0){
                         sum += j;                   //每个因数相加,用sum 来接收结果
                     }
                 }
                 if(sum == i){                        //判断完数!
                     console.log('这是个完数!:',i);
                     for(k = 1;k <= i/2;k ++){            
                         if(i % k == 0){
                             console.log(k+' ');          // 打印完数的所有因子!
                         }
                     }
                 }
             }
</script>

运行结果:


<think>好的,用户想要用前端JavaScriptfor循环打印100以内的质。首先,我需要确认质的定义:除了1和自身外没有其他因数,所以最小的质是2。接下来,我需要考虑如何判断个数是否为质,然后用循环遍历2到100之间的每个数字,逐个检查。 首先,外层循环应该是从2开始到100结束,每个数都检查是否是质。然后,对于每个数n,内层循环用来检查从2到n的平方根之间的是否能整除n。因为如果n有因数,那么至少有因数小于等于它的平方根,这样可以减少循环,提高效率。 接下来,我需要考虑如何实现这个判断。对于每个n,初始化个标志变量isPrime为true。然后内层循环从2开始到Math.sqrt(n),如果发现任何个数能整除n,就将isPrime设为false,并跳出循环。如果循环结束后isPrime仍为true,则n是质,将其存入结果组。 然后,需要考虑如何将结果输出到前端页面。可以使用document.write或者console.log,但通常console.log更常见,不过用户可能希望显示在页面上,所以可能需要创建个元素,比如div,将结果插入其中。 在代码结构上,先创建个空组来存储质。外层循环遍历2到100,内层循环判断质。需要注意边界条件,比如当n=2时,内层循环不会执行,直接标记为质,这是正确的,因为2是最小的质。 还需要测试些例子,比如n=3,是否会被正确识别,以及合如4、9等是否被排除。同时,要考虑效率问题,虽然100以内计算量不大,但使用平方根作为上限是更优的做法。 最后,整合代码,确保语法正确,比如正确使用for循环、变量作用域,以及正确使用取模运算符%。然后将结果输出到页面,可能需要用innerHTML或textContent来显示结果。 可能的错误点包括:循环的终止条件错误,比如内层循环应该是<= Math.sqrt(n),或者忘记将标志变量重置为true,或者在发现因数后没有及时break,导致不必要的循环。此外,处理结果时可能需要将组转换为字符串,用逗号分隔。 总结步骤:遍历2到100,每个数检查是否能被2到其平方根之间的整除,如果不能,则是质,收集起来,最后输出。</think>### 分步解答: 质定义:大于1的自然,且只能被1和自身整除。例如:2, 3, 5, 7... ### 实现步骤: 1. **外层循环**:遍历2到100之间的所有字 2. **内层循环**:检查当前字是否为质 3. **优化点**:只需检查到平方根即可(学定理) 4. **结果存储**:将质存入组并输出 ### 完整代码实现: ```html <!DOCTYPE html> <body> <script> // 步骤1:创建存储质组 const primes = []; // 外层循环:遍历2到100 for (let n = 2; n <= 100; n++) { let isPrime = true; // 内层循环:检查2到√n的整除性 for (let i = 2; i <= Math.sqrt(n); i++) { if (n % i === 0) { isPrime = false; break; // 发现因数立即终止循环 } } // 如果是质则存入组 if (isPrime) primes.push(n); } // 输出到页面(两种方式任选其) document.write(primes.join(', ')); // 方式1:直接写入页面 console.log(primes); // 方式2:输出到控制台 </script> </body> </html> ``` ### 关键代码解析: 1. **外层循环**: ```javascript for (let n = 2; n <= 100; n++) ``` 从2开始遍历到100(包含) 2. **质判断逻辑**: ```javascript let isPrime = true; for (let i = 2; i <= Math.sqrt(n); i++) { if (n % i === 0) { isPrime = false; break; } } ``` - 通过`Math.sqrt(n)`减少循环 - 发现可整除立即终止内层循环 3. **结果输出**: ```javascript primes.join(', ') // 将组转换为逗号分隔的字符串 ``` ### 学原理: 若$n$不是质,则存在两个因数$a,b$满足: $$n = a \times b$$ 其中至少因数$\leq \sqrt{n}$,因此只需检查到$\sqrt{n}$即可确认是否为质。 ### 执行结果: 页面会显示所有100以内的质: `2, 3, 5, 7, 11, 13, ..., 97`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值