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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

等差素数列(素数筛暴力)

發布時間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 等差素数列(素数筛暴力) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標題:等差素數列

2,3,5,7,11,13,…是素數序列。
類似:7,37,67,97,127,157 這樣完全由素數組成的等差數列,叫等差素數數列。
上邊的數列公差為30,長度為6。

2004年,格林與華人陶哲軒合作證明了:存在任意長度的素數等差數列。
這是數論領域一項驚人的成果!

有這一理論為基礎,請你借助手中的計算機,滿懷信心地搜索:

長度為10的等差素數列,其公差最小值是多少?

注意:需要提交的是一個整數,不要填寫任何多余的內容和說明文字。

一開始還想著深搜。。。
我們把1e5內的素數篩出來,然后遍歷每一個素數,假設公差為1~1000之間,看看有沒有一個素數符合題意,有符合的直接返回就可以了。
答案為:210
代碼如下:

#include<bits/stdc++.h> #define ll long long using namespace std;const int maxx=1e5+100; int sus[maxx]; int vis[maxx];inline int init() {memset(sus,0,sizeof(sus));memset(vis,0,sizeof(vis));int cnt=0;for(int i=2;i<maxx;i++){if(vis[i]==0){sus[++cnt]=i;for(int j=i+i;j<maxx;j+=i) vis[j]=1;}}return cnt; } inline int solve(int n) {int k;for(int i=1;i<=n;i++){int x=sus[i];for(int j=1;j<=1000;j++){for(k=1;k<=9;k++){if(vis[x+k*j]) break;}if(k==10) return j;}} } int main() {int n=init();cout<<solve(n)<<endl;return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的等差素数列(素数筛暴力)的全部內容,希望文章能夠幫你解決所遇到的問題。

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