/**
* 实验题目:
* 求素数
* 实验内容:
* 设计一个程序,输出所有小于等于n(n为一个大于2的正整数)的素数。
* 实验要求:
* 1、每行输出10个素数
* 2、尽可能采用较优的算法
*
*/
#include <stdio.h>
#include <math.h>
/*----------------------------判断正整数x是否为素数-------------------------*/
static int prime(int x)
{
int i;
for(i = 2; i < (int)sqrt(x); i++) // 若x不是素数,则退出并返回0
{
if(x % i == 0)
return 0;
}
return 1;
}
int main(void)
{
int n; // n为一个大于2的正整数
int i; // i为循环变量
int j = 0; // j用于累计素数个数
printf("n:");
scanf("%d", &n);
printf("小于等于%d的素数:\n", n);
if(n > 2)
{
printf("%4d", 2);
j++;
}
for(i = 3; i <= n; i += 2)
{
if(prime(i) == 1)
{
printf("%4d", i);
if((j != 0) && (++j % 10 == 0)) // 每行最多显示10个素数
printf("\n");
}
}
printf("\n");
return 0;
}
测试结果:
n:100
小于等于100的素数:
2 3 5 7 9 11 13 15 17 19
23 25 29 31 35 37 41 43 47 49
53 59 61 67 71 73 79 83 89 97