当前位置: 代码迷 >> 综合 >> c++入门教程(十一)
  详细解决方案

c++入门教程(十一)

热度:41   发布时间:2023-12-18 14:24:22.0

首先,来解决一下上一节问题

质数:在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数

然后大概思路就是 先判断这个数和2 的关系.

小于2一定不是

不小于2需要判断

然后 ,又到了流程图时间了

这张图可能有点复杂,红色框框里面是真正的循环.参照下面的代码看一下吧


#include <iostream>
using namespace std;
 
void main()
{
    int a = 0;
    int b;
    cin>>b;
    if(2 > b){
        cout<<"不是质数"<<endl;
    }else{
        for(int c = 1; c<b; c++){
            if(0 == (b%c)){
                a++;
            }
        }
        if(a > 2){
            cout<<"不是质数"<<endl;
        }else{
            cout<<"是质数"<<endl;
        }
    }
}
然后来思考一个问题
当输入的是20的时候  20有下面几个约数   1,2,4,5,10,20

当判断完4的时候就已经有三个约数了,这个数就一定不是质数了,所以这个时候我们需要提前结束循环

在c++里面使用break来提前结束循环(当执行到break时循环不再向下进行而是直接结束,继续执行循环之后的代码)  

上面例子用break修改后的结果如下


#include <iostream>
using namespace std;
 
void main()
{
    int a = 0;
    int b;
    cin>>b;
    if(2 > b){
        cout<<"不是质数"<<endl;
    }else{
        for(int c = 1; c<b; c++){
            if(0 == (b%c)){
                a++;
            }
            if(a > 2){
 
                break;
            }
        }
        cout<<"结束循环时a = "<<a<<"    b = "<<b<<"    c = "<<c<<endl;
        if(a > 2){
            cout<<"不是质数"<<endl;
        }else{
            cout<<"是质数"<<endl;
        }
    }
}
运行结果如下


可以看到结束循环时c为4  没有把1~20所有的数字都判断一次

与break类似的还有一个continue  不过continue只是跳过自己到循环体结束的大括号之间的代码然后继续循环的执行(break是直接结束循环,不会再执行了)

例如有下面需求

输入一个数a,输出1~a之间所有不能被3整除的数

代码如下

#include <iostream>
using namespace std;
 
void main()
{
    int a;
    cin>>a;
    for(int b = 1; b<=a; b++){
        if(0 == (b % 3)){
            continue;
        }
        cout<<b<<"    ";
    }
    cout<<endl<<"循环结束"<<endl;
}


可以看到  所有3的倍数跳过了输出的步骤直接向下执行了
--------------------- 
作者:过去心不可得 
来源:CSDN 
原文:https://blog.csdn.net/t1172400887/article/details/77170741 
版权声明:本文为博主原创文章,转载请附上博文链接!