zoukankan      html  css  js  c++  java
  • Eratosthenes筛法求1100之间的素数

    /*
    写出不超过100的所有的素数。
    解  将不超过100的正整数排列如下:

     1   2   3   4   5   6   7   8   9  10
    11  12  13  14  15  16  17  18  19  20
    21  22  23  24  25  26  27  28  29  30
    31  32  33  34  35  36  37  38  39  40
    41  42  43  44  45  46  47  48  49  50
    51  52  53  54  55  56  57  58  59  60
    61  62  63  64  65  66  67  68  69  70
    71  72  73  74  75  76  77  78  79  80
    81  82  83  84  85  86  87  88  89  90
    91  92  93  94  95  96  97  98  99  100

    按以下步骤进行:
    (ⅰ)  删去1,剩下的后面的第一个数是2,2是素数;
    (ⅱ)  删去2后面的被2整除的数,剩下的2后面的第一个数是3,3是素数;
    (ⅲ)  再删去3后面的被3整除的数,剩下的3后面的第一个数是5,5是素数;
    (ⅳ)  再删去5后面的被5整除的数,剩下的5后面的第一个数是7,7是素数;
      L L
    照以上步骤可以依次得到素数2, 3, 5, 7, 11, L。
    由定理2推论可知,不超过100的合数必有一个不超过10的素约数,因此在删去7后面被7整除的数以后,就得到了不超过100的全部素数。

    */

    //Eratosthenes筛法求1-100之间的素数
    #include <cstdlib>
    #include <iostream>
    #include <cmath>

    using namespace std;

    bool judge(int n)//判断该n是否为素数
    {
        bool j=1;
        for (int i=2;i<sqrt(n);i++)
        {
            if (n%i==0)
            {
                j=0;
            }
        }
        return j;
    }

    void del(int n,int *a)//删去n后面的被2整除的数
    {//广州c++培训
        for (int i=n;i<100;i++)
        {
            if(a[i]%n==0)
                a[i]=-1;
        }
    }
    int main(int argc, char *argv[])
    {
        int a[100];
        for(int i=0;i<100;i++)
            a[i]=i+1;
        a[0]=-1;
        for (i=2;i<sqrt(100);i++)//任何大于1的合数a必有一个不超过 的素约数
        {
            if(judge(a[i]))
            {
                del(i,a);//如果为素数,将该数设置为-1
            }
        }
        
        for(i=0;i<100;i++)//输出
        {
            if(a[i]>0)
            cout<<a[i]<<" ";
        }
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    广州达内,www.gztarena.com www.gdtarena.com www.s-tarena.com
  • 相关阅读:
    9.1 正则介绍_grep上 9.2 grep中 9.3 grep下
    汉诺塔递归问题
    8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下
    8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件
    8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
    socket中使用序列化传结构体
    C# get,set属性用法
    Log4Net如何将日志按不同类型写入多个文件中
    app.config文件的configation标签中加代码引起”配置系统未能初始化“
    WinForm下使用 log4net
  • 原文地址:https://www.cnblogs.com/javaitpx/p/2780430.html
Copyright © 2011-2022 走看看