欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

素数埃氏筛C语言

时间:2023-04-23

#include #include void eratosthenes(int *nums, int numsSize) { for (int i = 2; i < numsSize; i++) { if (nums[i]) { for (int j = 2; i * j < numsSize; j++) { nums[i * j] = 0; } } }}int main() { int n; scanf("%d", &n); if (n < 2) return 0; //如果小于2,代表没有质数直接返回 n++; //0~n有n+1个数,所以数组大小加1 int *nums = (int *) malloc(sizeof(int) * (n));//动态开辟数组 nums[0] = nums[1] = 0; //0 和 1 不是质数 // 给数组赋初值,假设后面的都是质数,1为质数,0为非质数 for (int i = 2; i < n; i++) { nums[i] = 1; } //进行埃氏筛法 eratosthenes(nums, n); //遍历数组将是质数的给打印 for (int i = 2; i < n; i++) { if (nums[i]) { printf("%d ", i); } } return 0;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。