质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数,求质数的方法有很多,这里我们将介绍一种简单的方法,即埃拉托斯特尼筛法(Sieve of Eratosthenes)。
埃拉托斯特尼筛法是一种古老的筛选质数的方法,由古希腊数学家埃拉托斯特尼(Eratosthenes)于公元前3世纪提出,该方法的基本思想是:首先列出从2开始的所有自然数,然后从2开始,将2的倍数剔除,接着找到下一个未被剔除的数(即3),将3的倍数剔除,以此类推,直到所有小于等于给定上限的数都被剔除为止,最后剩下的数即为质数。
下面是一个使用C语言实现埃拉托斯特尼筛法的程序:
#include <stdio.h> #include <stdbool.h> #include <string.h> #define MAX_NUM 1000000 bool is_prime[MAX_NUM + 1]; void sieve(int n) { memset(is_prime, true, sizeof(is_prime)); is_prime[0] = is_prime[1] = false; for (int i = 2; i <= n; i++) { if (is_prime[i]) { for (int j = i * i; j <= n; j += i) { is_prime[j] = false; } } } } int main() { int n = 1014; // 求1014以内的质数 sieve(n); for (int i = 2; i <= n; i++) { if (is_prime[i]) { printf("%d ", i); } } return 0; }
程序首先定义了一个布尔数组is_prime
,用于存储每个数是否为质数。sieve
函数实现了埃拉托斯特尼筛法,将小于等于n的所有质数标记为true
,非质数标记为false
,在main
函数中,我们调用sieve
函数求出1014以内的质数,并将结果输出。
运行上述程序,我们可以得到1014以内的质数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/377764.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复