C++ 嵌套循环 | C++ 循环

返回到:C++ 循环

一个循环内可以嵌套另一个循环。C++ 允许至少 256 个嵌套层次。

语法

C++ 中 嵌套 for 循环 语句的语法:for ( init; condition; increment ) { for ( init; condition; increment ) { statement(s); } statement(s); // 可以放置更多的语句 }

C++ 中 嵌套 while 循环 语句的语法:while(condition) { while(condition) { statement(s); } statement(s); // 可以放置更多的语句 }

C++ 中 嵌套 do…while 循环 语句的语法:do { statement(s); // 可以放置更多的语句 do { statement(s); }while( condition ); }while( condition );

关于嵌套循环有一点值得注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。

实例

下面的程序使用了一个嵌套的 for 循环来查找 2 到 100 中的质数:

#include <iostream>
using namespace std;
 
int main ()
{
    int i, j;
    for(i=2; i<100; i++) {
        for(j=2; j <= (i/j); j++) {
            if(!(i%j)) {
                break; // 如果找到,则不是质数
            }
        }
        if(j > (i/j)) {
            cout << i << " 是质数\n";
        }
    }
    return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

2 是质数
3 是质数
5 是质数
7 是质数
11 是质数
13 是质数
17 是质数
19 是质数
23 是质数
29 是质数
31 是质数
37 是质数
41 是质数
43 是质数
47 是质数
53 是质数
59 是质数
61 是质数
67 是质数
71 是质数
73 是质数
79 是质数
83 是质数
89 是质数
97 是质数

实例

筛选法代码查找 2 到 100 中的质数:

#include <iostream>
#include<math.h>

using namespace std;

int main()
{
    int i,j;
    for(i=2;i<100;i++)
    {
        for(j=2;j<=(double)sqrt((double)i);j++)
        {
            if(!(i%j))
                break;//不是质数
        }
        if(j>(double)sqrt((double)i))
            cout<<i<<"是质数\n";
    }
        return 0;
}

根据质数的倍数一定不是质数,利用线性筛法,可以让时间复杂度达到O(n),代码献上:

//求2~n之间的素数 
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define MAXN_N 1000001
int v[MAXN_N],primes[MAXN_N];//primes用来存储素数
int main()
{
    int n,m=0;//m 是素数的数目 
    cout << "输入 n 的值:" << endl;
    scanf("%d",&n);
    memset(v,0,sizeof(v));
    for(int i=2;i<=n;i++)
    {
        if(v[i]==0)//i是素数 
        {
            v[i]=i;
            primes[++m]=i;
        }
        for(int j=1;j<=m;j++)
        {
            if(primes[j]>v[i]||primes[j]>n/i)break;//i有比primes[j]更小的质因子,或者超出范围
            v[i*primes[j]]=primes[j];//primes[j]是合数i*primes[j]的最小质因子 
        }
    }
    for(int i=1;i<=m;i++) cout<<primes[i]<<" ";
    return 0;
} 

返回到:C++ 循环

作者:terry,如若转载,请注明出处:https://www.web176.com/cpp_api/14283.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2023年3月24日
下一篇 2023年3月24日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注