栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

埃氏筛法(c语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

埃氏筛法(c语言)

  • 思路:我们可以建立一个大一点的数组,用来存储每个数是否是素数(素数用1表示,非素数用0表示),我们最开始假定2以后的数都是素数,每找到一个素数就把他们的倍数变成非素数。
  • 思路非常简单接下来就直接上代码吧
//这个是主要步骤的实现代码
for(int i = 2;  i * i <= MAXSIZE; i++)
    {
        if(nums[i])
        {
            for(int j = i + i; j < MAXSIZE; j += i)
            {
                nums[j] = 0;
            }
        }
    }
  • 接下来让我们进行一些测试
#include 
#include 
#define MAXSIZE 100000005
int nums[MAXSIZE]={0, 0};

int main()
{
    int n;
    for(int i = 2; i < MAXSIZE; i++)
    {
         nums[i] = 1;
    }
    for(int i = 2;  i * i <= MAXSIZE; i++)
    {
        if(nums[i])
        {
            for(int j = i + i; j < MAXSIZE; j += i)
            {
                nums[j] = 0;
            }
        }
    }
    printf("输入几组判断数据");
    scanf("%d", &n);
    while(n--)
    {
        int s;
        scanf("%d", &s);
        if(nums[s])
            printf("是素数n");
        else
            printf("不是素数n");
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号