C语言实现打印1000以内素数的三种基本方法

来源:互联网 发布:淘宝卖什么单体利润大 编辑:程序博客网 时间:2024/05/18 02:23

/***********************************************
*      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];
}

 

附:

运行结果图

原创粉丝点击