素数等于质数
即:只能被1和它本身整除
方法一:使用嵌套 for 循环
//方法一:
//第一个for循环,创建100-200之间的数据
//第二个for循环,创建2到i-1的数据
//然后取余,被整除就不是素数。
//到最后一个j++会导致j==i,出现这个情况,该数据就是素数。
int i = 0;
for (i = 100; i <= 200; i++) {
int j = 0;
for (j = 2; j < i; j++) {
if (i % j == 0) {
break;
}
}
if (j == i) {
printf("%d ", i);
}
}
方法二:多个 count 变量计算素数个数;用 flag 变量判断是否是素数。
int i = 0;
int count = 0;
for (i = 100; i < 200; i++) {
int flag = 0;
int j = 0;
for (j = 2; j < i; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
count++;
printf("%d ", i);
}
}
printf("\n%d\n", count);
方法三:使用平方函数,减小循环范围,提高效率
m = a * b;
a 和 b 中至少有一个数字是 <=(小于等于) 开平方的 m。
例如:16 = 28 = 44
2 和 8 至少有一个数字是 小于等于 开平方的 m。
这样就可以让第二个 for 循环减小范围,提高效率。
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++) {
int j = 0;
int flag = 1;
//sqrt 是开平方函数 要引用math.h
for (j = 2; j <= sqrt(i); j++) {
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag) {
count++;
printf("%d ", i);
}
}
printf("\n%d ", count);