日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P3383 【模板】线性筛素数

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P3383 【模板】线性筛素数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://www.luogu.com.cn/problem/P3383

//線性篩法 /* P3383 【模板】線性篩素數 https://www.luogu.com.cn/problem/P3383數論 - 歐拉篩法(線性篩)的解釋 https://blog.csdn.net/Losk_0/article/details/87884390素數篩法詳解(歐拉篩&埃氏篩) https://blog.csdn.net/FeilingGong/article/details/83660779算法筆記(四)——歐拉篩法求素數 https://blog.csdn.net/weixin_42172676/article/details/81978475快速線性篩法的原理和值得借鑒的方法【解析算法】 https://blog.csdn.net/nuanxin_520/article/details/41207145快速線性篩法的特點就是不會重復篩除一個合數。它的原理是前提是:一個合數i=p1*p2*...*pn, pi都是素數(2<=i<=n),pi<=pj( i<=j )p1是最小的系數。這樣每一個合數就有一個確定的表示方法,不會重復。(像12=2*2*3)No.1:我們現在規定一個合數由兩個數得到。NO.2:那么合數有兩種。1.素數*素數=合數 2.一個最小的素數*合數=合數篩除:如果遇到i為素數,那么一個大的素數 i 乘以不大于 i 的素數,這樣篩除的數跟之前的是不會重復的如果遇到i為合數,我們只認為合數由一個最小的素數*合數得到,也不會重復(就像12=2*6而不是12=3*4)一般的線性篩法 https://www.cnblogs.com/KyleDeng/p/9244850.html*/ #include<bits/stdc++.h> using namespace std; int pr[8000010],c[100000010],n,m,s=0,x; int main() {memset(c,0,sizeof(c));scanf("%d%d",&n,&m);for(int i=2;i<=n;++i){if(c[i]==0){pr[++s]=i;}for(int j=1;j<=s && i*pr[j]<=n;++j){c[i*pr[j]]=1;if(i%pr[j]==0){break;}}}for(int i=1;i<=m;++i){scanf("%d",&x);printf("%d\n",pr[x]);}return 0; }

總結

以上是生活随笔為你收集整理的P3383 【模板】线性筛素数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。