zoukankan      html  css  js  c++  java
  • 利用数组求前n个质数

    #include <stdio.h>
     
    #define N 50
    int main(int argc, char *argv[])
    {
        int primes[N];/*引入质数素*/
        int pc,m,k;/*pc质数个数,m测试的数,k能够被整除的数*/
     
        printf("The first %d prime number are: 
    ",N);
        primes[0]=2; /*2是第一个质数*/
        pc=1; /*已经有1个质数*/
        m=3;/*被测试的数从3开始*/
        while(pc<N)
        {
            /*调整m 使它为下一个质数*/
            k=0;
            while(primes[k]*primes[k]<=m)
            {
                if(m%primes[k]==0)
                {
                    /*m是合数*/
                    m+=2;/*让m取下一个奇数*/
                    k=1;/*不必用primes[0]=2去测试m,所以k从1开始*/
                }
                else
                {
                    k++;/*继续用一个质数去测试*/
                }
            }
            primes[pc++]=m;
            m+=2;/*除2外,其它质数均是奇数*/       
        }
         
        /*输出primes[0]到primes[pc-1]*/
        for(k=0;k<pc;k++)
        {
            printf("%4d",primes[k]);
        }
        printf("
    
     Press any key to quit...
    ");
        getchar();
    }
    

     算法的主要思想是:

    如果整数m,如果它不能被小于它的质数整除,则m也是质数。引入质数表primes[],已求得的质数个数为pc.

  • 相关阅读:
    trie树
    基数排序
    CF724E Goods transportation 最小割 DP
    [CQOI2009]跳舞 网络流
    NOIP2018爆零记
    斜率优化
    CF311B Cats Transport 斜率优化DP
    逆元
    卡特兰数
    【BZOJ】【1565】【NOI2009】PVZ 植物大战僵尸
  • 原文地址:https://www.cnblogs.com/lumouren009/p/3182171.html
Copyright © 2011-2022 走看看