当前位置:   article > 正文

C++学习笔记08:求质数_c++质数的代码表达式

c++质数的代码表达式

使用三种循环结构,求出1-100的质数。

for循环

#include <iostream>
using namespace std;
int main()
{
	int flag = 0, i, j;
	for (i = 2; i < =100; i++)
	{
		flag = 1;
		for (j = 2; j < i;j++)
			if (i % j == 0) flag = 0;
		if (flag) cout << i << "为质数" << endl;
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

另一种方法

#include <iostream>
using namespace std;
int main()
{
	int j,i;
	for (i = 2; i <= 100; i++)
	{ 
		for (j = 2; j <i; j++)
		{
			if (i % j == 0) break;
		}
		if (i == j)cout << i << endl;
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

while循环结构

#include <iostream>
using namespace std;
int main()
{
	int i=2, j=1, flag=1;
	while (i <= 100)
	{
		j = 2;
		flag = 1;
		while (i>j)
		{
			if (i % j == 0)
			{ 
				flag = 0;
				break;
			}
			j++;
		}
		if (flag) cout << i << "为质数" << endl;
		i++;
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

do while 结构

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int i=2, j, flag,k=0;
	do 
	{
		j = 2;
		flag = 1;
		k = sqrt(i);
		do 
		{
			if (i % j == 0&&i!=j) { flag = 0; break; }
			j++;
		} while (j<=k);
		if (flag) cout << i <<"为质数"<< endl;
		i++;
		} while (i <= 100);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

思考

  1. 使用三种循环结构处理同一个问题,要区分三种语句的格式。
  2. do while结构 循环体内的内容至少被执行一次,所以代码的内容会与另外两种有所不同,主要区别是在条件判断上要稍作改动。
  3. 答案中用到了sqrt函数,使用开方后的数作为除数,可以省去多余的运算,节约程序运行的空间和加快运行速度。
  4. break也起到了类似的作用,一旦发现当前i不满足质数,则不进行多余运算,立刻跳出当前循环。值得注意的是for循环跳出后,不再执行表达式3的内容。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/75342
推荐阅读
相关标签
  

闽ICP备14008679号