埃氏筛素数法
从2开始枚举所有数(已知2为素数),筛去每一个素数的倍数,剩下的就都是素数。
#include <cstdio> const int maxn = 1001; bool p[maxn] = {false}; int prime[maxn],pNum = 0; void find_prime(int n) { int i,j; for(i = 2;i < n;i++) //2为素数,已初始化,从2开始 { if(p[i] == false){ prime[pNum++] = i;//写入素数表 for(j = i+i;j < n;j += i) { p[j]=true; //若i为素数,将该范围内的所有i的倍数标记为合数 } } } } int main() { int n,i; scanf("%d",&n); find_prime(n); for(i = 0;i < pNum; i++) { printf("%d ",prime[i]); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步