文章
6
粉丝
137
获赞
2
访问
5.8k
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<math.h>
#define N 10000000
/*
埃拉托斯特尼筛法是一种用于找出一定范围内所有素数的算法:
1.首先,创建一个包含从2到所需范围内所有数字的列表。
2.从最小的素数2开始,将其标记为素数,并将其倍数(除了自身)标记为合数。
3.继续找到下一个未被标记的素数,将其标记为素数,并将其倍数标记为合数。
4.重复步骤3,直到找到的素数的平方大于所需范围的最大值。
5.最后,未被标记为合数的数字即为素数。
*/
int primes[N];//primes数组用于存储素数。在isPrime函数中,当发现一个素数时,将其存储在primes数组中。cnt变量用于记录已经存储的素数的数量。
int st[N], cnt = 0; //st数组用于标记数字是否为素数。数组的索引表示数字,数组的值表示该数字是否为素数。0表示为素数,1表示为非素数
void isPrime(int n)
{
st[1] = 0; //st的值初始化都为0
for(int i = 2;i <= n; i++)
{
if(!st[i]) //如果st[i]为非素数
{
primes[cnt] = i;
cnt++;
}
//通过遍历素数数组 primes,将能被素数整除的数标记为非素数,从而筛选出素数。
for...
登录后发布评论
暂无评论,来抢沙发