您的位置:首页 > 其它

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

2015-10-23 16:36 204 查看
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){

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: