JZOJ4725 質數序列 題解(數學)

2022-03-26 10:51:37 字數 1002 閱讀 1030

題目大意:質數序列是指這個序列中任意兩個數的和均為質數。先給出乙個序列$}$,從中取出元素構成最長質數序列,問其長度並輸出序列。若長度相同則求和最大的序列。保證答案唯一。

小小的數學題。

1.偶數+偶數不是質數,奇數+奇數不是質數。但某些偶數+奇數($1$)是質數。所以這個序列中$1$是個很關鍵的因素。

我們進行分類討論:

1.若序列中$1$的個數大於$2$

長度為所有$1$的個數。

所有$1$再加乙個偶數。(此偶數+$1$後為質數)

2.若序列中$1$的個數等於$2$

兩個$1$。

兩個$1$加乙個偶數。

偶數+奇數。

3.若序列中$1$的個數小於$2$

偶數+奇數。

質數需要線性篩預處理。

**:

#include#define int long long

using

namespace

std;

bool vis[30000010

];int n,p[1000005],c,a[100005

],m,t,s,b;

signed main()

for (int i=2;i<=m;i++)

}sort(a+1,a+n+1

);

if (c>1

)

}for (int i=1;i<=c;i++) printf("1 "

);

return0;

}for (int i=1;i<=n;i++)

for (int j=1;j)

if (!vis[a[i]+a[j]]&&a[i]+a[j]>a[s]+a[b]) s=i,b=j;

if (!a&&!b)

printf("0

");}

printf(

"2\n%d %d

",a[b],a[s]);

return0;

}

JZOJ5458 質數 數論,數學

題目 求ll l到rr r中是質數或是兩個質數之積的數的個數。首先,觀察最大資料 l r 107 q 1 05 l leq r leq 10 7,q leq 10 5 l r 10 7,q 105那麼肯定是要離線做的。肯定是要先篩質數,那麼就用線性篩,不僅得到1 11到r rr之間的質數,還得到了每...

質數串 亂搞

乙個正整數x 是質數,當且僅當x 2 且x不是任何乙個 2,x 1 的數的倍數。乙個數字串是 質數串 當且僅當它的每個非空連續子串表示的數字都是質數。例子1 373 是質數串,它的子串有 3 37 373 7 73 3 這些串表示的數字都是質數。例子2 55 不是質數串,因為 55 這個子串表示的數...

JZOJ7月16日提高組T1 質數

題解定義質數為因數只含1和其本身的數,對於n組詢問,試判斷每個數是否為素數。第一行乙個正整數n,表示有n組詢問。接下來n行,每行乙個正整數m,表示詢問m是否為質數。輸出n行,每行乙個字串。若是質數則輸出 prime 若不是質數則輸出 not prime 52 1089807289 903248294...