zoukankan      html  css  js  c++  java
  • 用筛选法求100以内的素数(筛选法!!!)

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a[101],i,j;
    
        for(i=1; i<=100; i++)
        {
            a[i] = i;   //为数组赋初值
        }
        a[1] = 0;//先去掉a[1]
    
        for(i=2; i<sqrt(100); i++)  //如果需要找1-n范围内的素数表,只须进行到除数为根号下n(取整数就可)
        {
            for(j=i+1; j<=100; j++)
                if( a[i]!=0 && a[j]!=0 )
                    if(a[j]%a[i] == 0)
                    {
                        a[j] = 0;
                    }
    
        }
    
        printf("
    ");
        int n;
    
        for(i=2,n=0; i<=100; i++)
        {
            if(a[i]!=0)
            {
                printf("%5d",a[i]);
                n++;
            }
    
            if(n==10)
            {
                printf("
    ");
                n = 0;//一次完成之后初始化
            }
        }
    
    
        return 0;
    }

    所谓筛选法是“埃拉托色尼筛法“,将一组数据逐个判断他们是否素数,找出一个非素数,就把它挖掉,最后剩下的就是素数

    算法可表示为;

    (1)挖去1;

    (2)用下一个未被挖去的数p除p后面各数,把p的倍数挖掉

    (3)检查p是否小于根号n的整数部分,如果是,则返回(2)继续执行,否则就结束

    (4)剩下的就是素数

  • 相关阅读:
    Maven项目类型和JAVASE项目和JAVAEE项目的关系
    使用faker 生成测试数据
    python 面向对象
    python csv读写
    分治
    django 部署
    js 时间格式转换
    python环境
    枚举
    递归
  • 原文地址:https://www.cnblogs.com/18191xq/p/12738216.html
Copyright © 2011-2022 走看看