素数的概念:
素数又叫做质数(prime number),指的是在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,否则称为合数。合数除了1和这个数本身,还能被其他正整数整除。1既不是质数也不是合数。
bool:
bool
类型关键字是 .NET System.Boolean 结构类型的别名,它表示一个布尔值,它的值可是 true
或 false
。
若要使用 bool
类型的值执行逻辑运算,请使用布尔逻辑运算符。 bool
类型是 比较和相等运算符的结果类型。 bool
表达式可以是 if条件语句、do-while循环语句、while循环语句和 for循环语句中以及三目条件运算符:?中的控制条件表达式。
另外,bool
类型的默认值为 false
。
思路
首先定义一个n用于获取用户输入的n值,然后用一个for循环一个个判断是否为素数,在这里需要立一个flag用于判断是否为素数,然后再用一个for循环大于2且小于第一个for循环的循环变量,如果i在2到i里有求余为0的数,则前面立flag为0,该数不为素数。在第二个循环后面判断前面的flag是否为真,如果为真则输出该素数,如果为假,则接着循环。
初级版:
代码语言:javascript复制#include "stdio.h"
int main() {
int n;
scanf("%d", &n);
for (int i = 2; i < n; i ) {
bool flag = 1;
for (int j = 2; j < i; j ) {
if (i % j == 0) {
flag = 0;
}
}
if (flag) {
printf("%dn", i);
}
}
return 0;
}
进阶版:
#include "stdio.h" int main() { int n; scanf("%d", &n); if (n >= 2) { printf("2n"); } for (int i = 3; i < n; i = 2) { bool flag = 1; for (int j =0 ; j< i; j = 2) { if (i % j == 0) { flag = 0; } } if (flag) { printf("%dn", i); } } return 0; }
本题考查了双重for循环语句,if语句以及bool值
注意事项:
1.对flag的赋值要在两个循环之间,这样才能保证每次判断这个数是不是素数时,flag的初始值都为1;
2.在进阶版中直接从3开始,每次加2,这样可以排除偶数,减少电脑的运算时间,提高运算速率,但是这样就会漏算了一个2,所以要在前面加一个判断——n是否大于二,如果大于二就要先输出一个二,因为二也是素数。