部分结果……
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int count = 0;
for (int num = 2; num <= 2000; num++) {
if (is_prime(num)) {
printf("%d ", num);
count++;
if (count % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
上述代码使用is_prime函数来判断一个数是否为素数。对于一个大于等于2的数n,如果存在一个小于等于sqrt(n)的正整数能够整除n,则n不是素数。如果不存在这样的整数,则n是素数。我们遍历2到sqrt(n)(包含边界)以内的正整数检查能否整除n,若存在满足条件的数则n不是素数,否则n是素数。
简单实现版:
#include <stdio.h>
int main()
{
int i, j, n = 0; //i和j为循环计数器,n记录素数个数
for (j = 2; j <= 2000; j++) //2-2000的数逐个判断是否是素数
{
for (i = 2; i <= j - 1; i++) //对数j用2~j-1逐个去除
{
if (j % i == 0) //除尽就跳出
break;
}
if (i >= j) //判断后输出素数
{
n++; //n累加
printf("%d ", j); //输出素数
if (n % 5 == 0) //每5个为一行
printf("\n"); //换行
}
}
return 0;
}