赞
踩
描述
用筛法求之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是否为真,决定是否输出数。
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- int N;
- cin >> N;
- bool prime;
- int i,j,k;
- for (i = 2; i <= N; i++)
- {
- prime= true;
- k = int(sqrt(i));
- for (j = 2; j <= k; j++)
- {
- if (i % j == 0)
- {
- prime = false; break;
- }
- }
- if (prime)
- {
- cout << i << endl;
- }
- }
- return 0;
- }
代码二(如下):不用sqrt()
- #include <iostream>
- using namespace std;
- int main()
- {
- int N, i, j;
- bool prime;
- cin >> N;
- for (i = 2; i < N; i++)
- {
- prime = true;
- for (j = 2; j < i; j++)
- if (i % j == 0)
- {
- prime = false;
- break;
- }
- if (prime)
- {
- cout << i << endl;
- }
- }
- return 0;
- }
问题点:
①: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类型来判断。
- #include<iostream>
- using namespace std;
- bool cmp(int a,int b){
- if(a > b){
- return true;
- }else{
- return false;
- }
- }
- int main()
- {
- int a = 5;
- int b = 6;
- if(cmp(a,b)){
- cout << "a> b!" << endl;
- }else{
- cout << "a< b!" << endl;
- }
- return 0;
- }
以上部分选自CSDN博主「&Mr.Gong」的原创文章
原文链接:https://blog.csdn.net/weixin_42258743/article/details/107780142
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。