/**
* 实验题1.1 求素数:只能被1或者自己整除的自然数(正整数)
* 设计一个程序,输出所有小于等于n(n为一个大于2的正整数)的素数。
* 要求:1、每行输出10个素数。2、尽可能采用较优的算法
*/
#include <stdio.h>
#include <math.h>
/* 判断正整数x是否为素数 */
int prime(int x);
int main(void)
{
int n, i, 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(1 == prime(i)){
printf("%4d", i);
if((j != 0) && (++j % 10 == 0))//每行输出10个素数
printf("\n");
}
}
printf("\n");
return 0;
}
/* 判断正整数x是否为素数 */
int prime(int x)
{
int i;
for(i = 2; i < (int)sqrt(x); i++){
if(x % i == 0)
return 0; //如果x不是素数,则退出并返回0
}
return 1;
}