埃拉托斯特尼筛法 - C语言实现
创始人
2024-09-30 00:00:43
0

以下是一个使用C语言实现埃拉托斯特尼筛法的示例代码:

#include 
#include 
#include 

void sieveOfEratosthenes(int n) {
    bool *prime = (bool *)malloc(sizeof(bool) * (n + 1));
    
    // 初始化数组,假设所有数字都是质数
    for (int i = 2; i <= n; i++) {
        prime[i] = true;
    }
    
    // 标记非质数
    for (int p = 2; p * p <= n; p++) {
        // 如果当前数字是质数
        if (prime[p] == true) {
            // 标记该质数的倍数为非质数
            for (int i = p * p; i <= n; i += p) {
                prime[i] = false;
            }
        }
    }
    
    // 输出所有质数
    for (int p = 2; p <= n; p++) {
        if (prime[p]) {
            printf("%d ", p);
        }
    }
    
    free(prime);
}

int main() {
    int n;
    printf("请输入一个正整数n:");
    scanf("%d", &n);
    
    printf("小于等于%d的所有质数为:\n", n);
    sieveOfEratosthenes(n);
    
    return 0;
}

这段代码实现了埃拉托斯特尼筛法,它接受一个正整数n作为输入,然后输出小于等于n的所有质数。首先,我们使用malloc函数动态分配了一个大小为(n + 1)的布尔类型数组prime,用于标记数字是否为质数。然后,我们将数组中的所有元素初始化为true,表示假设该数字为质数。接下来,我们使用两个嵌套的循环来标记非质数。外层循环控制当前质数的范围,内层循环用于将该质数的倍数标记为非质数。最后,我们再次遍历数组,输出所有标记为质数的数字。

main函数中,我们首先读取用户输入的正整数n,然后调用sieveOfEratosthenes函数,输出小于等于n的所有质数。

相关内容

热门资讯

透视免费"wepok... 透视免费"wepoker辅助透视软件"详细辅助德州论坛(有人用过辅助);支持多人共享记分板与复盘,通...
透视安装"poker... 1、透视安装"pokernow辅助工具"详细辅助揭秘教程(作弊方法透明)(UU poker、poke...
透视安装"佛手大菠萝... 透视安装"佛手大菠萝13道挂哪里"详细辅助玩家教你(可以买辅助神器);玩家必备必赢加哟《136704...
透视科技"大菠萝78... 透视科技"大菠萝789辅助器下载"详细辅助总结教程(可以挂飞机透明)科技教程也叫必备教程,这是一款功...
透视计算"xpoke... 1、透视计算"xpoker辅助器"详细辅助技巧教程(好友局透视软件)。2、xpoker辅助器透视辅助...
透视脚本"wepok... 您好,wepoker免费透视脚本这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...
透视教学"wepok... 1、透视教学"wepoker私人局辅助挂"详细辅助黑科技教程(有机器人透明)。2、wepoker私人...
透视透视"wepok... 透视透视"wepoker脚本"详细辅助透明教程(购买模拟器技巧)1、点击下载安装,微扑克wpk插件透...
透视软件"hhpok... 透视软件"hhpoker德州透视挂"详细辅助可靠教程(轻量版透视系统方法)1、点击下载安装,微扑克w...
透视插件"哈糖大菠萝... 1、透视插件"哈糖大菠萝万能挂"详细辅助玩家教你(有辅助器攻略)(UU poker、哈糖大菠萝万能挂...