zoukankan      html  css  js  c++  java
  • 素数的筛法算法

     素数筛法是这样的:

        1.开一个大的bool型数组prime[],大小就是n+1就可以了.先把所有的下标为奇数的标为true,下标为偶数的标为false.

        2.然后:

          for( i=3; i<=sqrt(n); i+=2 )

          {   if(prime[i])

              for( j=i+i; j<=n; j+=i ) prime[j]=false;

          }

        3.最后输出bool数组中的值为true的单元的下标,就是所求的n以内的素数了。

        原理很简单,就是当i是质()数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质

    数的倍数筛掉。

    #include<stdio.h>

    #include<math.h>

    #define N 10000001

    bool prime[N];

    int main()

    {

       int i, j;

       for(i=2; i<N; i++)

      if(i%2) prime[i]=true;

      else prime[i]=false;

       for(i=3; i<=sqrt(N); i++)

       {   if(prime[i])

           for(j=i+i; j<N; j+=i) prime[j]=false;

       }

       for(i=2; i<100; i++)//由于输出将占用太多io时间,所以只输出2-100内的素数。可以把100改为N

        if( prime[i] )printf("%d ",i);

      

       return 0;

    }

  • 相关阅读:
    自考新教材-p173_3(1)
    自考新教材-p148_5(2)
    自考新教材-p148_5(1)
    自考新教材-p148_4
    自考新教材-p147_3
    自考新教材-p146_4(2)
    python 模块 chardet报错解决方法:下载及介绍
    第 52 讲:论一只爬虫的自我修养
    第 51 讲: _name_属性
    Python 培训第一讲
  • 原文地址:https://www.cnblogs.com/wzf-Learning/p/8109378.html
Copyright © 2011-2022 走看看