第一章 基本语法-7循环(while)

来源:互联网 发布:angelababy 心机知乎 编辑:程序博客网 时间:2024/06/10 17:40

while循环语句也是比较常用的,它的格式

while(条件){

       满足条件执行

}

相对来说,当不知道要循环多少次的时候可以使用此循环方法。它与for循环可以互相转化

例如你想输入一个数,每次对它整除2,看看除几次之后他会等于0;这样,你就可以使用while循环,如下格式:

while(a!=0){

      a=a/2;

      次数+1;

}

当然也可以使用for循环来做,格式如下:

for(int 次数=0;a!=0;次数++){

       a=a/2;

}

实例1:输入一个数,判断它是不是素数。

素数概念:只有1和它本身两个约数的大于1的自然数。

分析:根据素数的概念,对于一个数n,可以检测它在2~n-1范围内有没有约数,有的话则是合数,没有则是素数。

进一步分析,根据上一篇求约数的文章,我们知道,只有检测2~根号N+1范围内没有约数即可;所以代码可以这样写

for(int i=2;i<=根号n;i++){

      if(n%i==0){

            则i是n的约数,即n是合数,不用再循环了

            跳出循环

       }

}

本篇学习while,所以我们使用while来写:

int i=2;

bool tag = false;

while(n%i!=0 && i<=根号n){

       i++;

}

if (i > sqrt(n)) {
//是素数
tag = true;
}

代码:

#include<iostream>#include <math.h>using namespace std;int main() {int n;int i = 2;bool tag = false;cout<<"n=";cin >> n;//for (i = 2; i <= sqrt(n); i++) {//if (n % i == 0) {////是合数//tag = false;//break;//}//}//if (i > sqrt(n)) {////是素数//tag = true;//}while(n%i!=0&&i <= sqrt(n)){i++;}if (i > sqrt(n)) {//是素数tag = true;}if (tag) {cout << n << "是素数";}else{cout << n << "是合数";}return 0;}

例题2:输出100以内的所以素数

在上述程序的基础上加上一层循环,此外由于大于2的素数不可能是偶数,所以循环的时候可以跳过偶数

for(int n=3;n<100;n=n+2){

里面写上上面判断方法即可

}





0 0