C语言用筛选法求 100 之内的素数(挖去 1,被除数平方根)

完整代码:

// 用筛选法求 100 之内的素数(挖去 1,被除数平方根)
//筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。

#include

int main()
{
    //创建一个数组存储这100个数
    int a[100];
    for (int i = 0; i < 100; i++)
    {
        a[i]=i+1;
    }
    //把1删除,这个数被删除了表示为这个数等于-1
    a[0]=-1;
    for (int i = 1; i < 100; i++)
    {
        //判断这个数是否存在
        if (a[i]!=-1)
        {
            //如果存在,就把这个数当作除数,比这个数大的数当作被除数
            for (int j = i+1; j < 100; j++)
            {
                //如果被除数存在并且可以整除,就删除这个被除数
                if (a[j]!=-1&&a[j]%a[i]==0)
                {
                a[j]=-1;
                }
            }
        }
    }
    //打印出没有被删除的数,即素数
    for (int i = 0; i < 100; i++)
    {
        if (a[i]!=-1)
        {
            printf("%d\n",a[i]);
        }
    }
    return 0;
}

运行截图:

C语言用筛选法求 100 之内的素数(挖去 1,被除数平方根)_第1张图片

你可能感兴趣的:(java,算法,数据结构)