当前位置:   article > 正文

筛法求素数_2. 求素数 设计一个程序, 输入n, 输出0~n之间的所有素数 (0

2. 求素数 设计一个程序, 输入n, 输出0~n之间的所有素数 (0

描述

用筛法求之N内的素数。。

输入

N

输出

0~N的素数

输入样例 1 

100

输出样例 1

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 

200

输出样例 2

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
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199

代码一(如下):

判断是否为素数的算法是:让一个数被2~sqrt(该数)除【或者如代码二中被2~(该数)除】,如果该数都不能被区间里的任何一个整数整除,就可以确定该数是素数。

为了记录数是否为素数,可以用一个布尔变量prime来表示。在循环开始时先设prime为真,若数被某一整数整除,就表示数不是素数,此时使布尔变量prime的值变为假。最后根据prime是否为真,决定是否输出数。

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int main()
  5. {
  6. int N;
  7. cin >> N;
  8. bool prime;
  9. int i,j,k;
  10. for (i = 2; i <= N; i++)
  11. {
  12. prime= true;
  13. k = int(sqrt(i));
  14. for (j = 2; j <= k; j++)
  15. {
  16. if (i % j == 0)
  17. {
  18. prime = false; break;
  19. }
  20. }
  21. if (prime)
  22. {
  23. cout << i << endl;
  24. }
  25. }
  26. return 0;
  27. }

代码二(如下):不用sqrt() 

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int N, i, j;
  6. bool prime;
  7. cin >> N;
  8. for (i = 2; i < N; i++)
  9. {
  10. prime = true;
  11. for (j = 2; j < i; j++)
  12. if (i % j == 0)
  13. {
  14. prime = false;
  15. break;
  16. }
  17. if (prime)
  18. {
  19. cout << i << endl;
  20. }
  21. }
  22. return 0;
  23. }

问题点:

①:C++中的布尔类型(bool):bool是C++中的基本数据类型,为布尔型用作逻辑判断。bool类型内存占一个字节。bool取值false和true,是0和1的区别;false可以代表0,但true有很多种,并非只有1。

②:return true 和return false
bool类型的函数返回值只有两种可能:true(真)或false(假)。

bool可用于定义函数类型为布尔型,函数里可以有 return true; return false 之类的语句。

return true;和return false;是两种状态,函数返回一个bool类型表示对于给定的输入做出判断,代表一种状态,很多情况下需要判断某些状态来选择性的执行操作的。但是如果不需要这种状态,可以不用返回任何值,void即可。

bool类型常作为循环、选择语句的判断依据。比如if(a());这个if语句就需要判断a()的返回值为true还是false,若是true,才会执行if语句内的操作。while()语句也需要bool类型来判断。

  1. #include<iostream>
  2. using namespace std;
  3. bool cmp(int a,int b){
  4. if(a > b){
  5. return true;
  6. }else{
  7. return false;
  8. }
  9. }
  10. int main()
  11. {
  12. int a = 5;
  13. int b = 6;
  14. if(cmp(a,b)){
  15. cout << "a> b!" << endl;
  16. }else{
  17. cout << "a< b!" << endl;
  18. }
  19. return 0;
  20. }


以上部分选自CSDN博主「&amp;Mr.Gong」的原创文章
原文链接:https://blog.csdn.net/weixin_42258743/article/details/107780142

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/328888
推荐阅读
相关标签