/***********************************************
* Content : 打印出1--1000以内的素数表
* Version : 1.0.0
* Author :
* Date : 2011/12/6 17:25
***********************************************/
void main()
{
int n,flag;
flag = 1;
for(n = 2; n <= 1000; n++)
{
if(isPrime(n) == 1)
{
printf("%3d ",n);
if(flag % 10 == 0)
{
printf("\n");
}
flag++;
}
}
getch();
return 0;
}
/*第一种实现方法,时间复杂度为O(n)*/
/*
int isPrime(int x)
{
int i;
for(i = 2; i <= x - 1; i++)
{
if(x % i == 0)
{
return 0;
}
}
return 1;
}
*/
/*第二种实现方法,时间复杂度为O(√n)*/
/*
int isPrime(int x)
{
int i;
for(i = 2; (int)(i * i) <= x; i++)
{
if(x % i == 0)
{
return 0;
}
}
return 1;
}
*/
/*第三种实现方法,时间复杂度为O(n loglog n)*/
int isPrime(int x)
{
int i,j;
int num[1001];
for(i = 2; i <= 1000; i++)
{
num[i] = 1;
}
for(i = 2; i <= 1000; i++)
{
if(1 == num[i])
{
for(j = i + i; j <= 1000; j += i)
{
num[j] = 0;
}
}
}
return num[x];
}
附:
运行结果图