b站筆試涼經。如題乙個數可以有多少種用連續素數之和表示poj 2739
//
// created by wbzhang on 2020/8/13.
//#include
#include
using namespace std;
// getprimenum,可以使用 排除法來生成小於n的質數
void
getprimebelown
(int n, vector<
int>
& primes)
}for
(int k =
2; k <= n;
++k)
}// 連續的質數之和,採用滑窗法
void
getnums
(int n,vector<
int>
& primes,
int&ans)
// 從陣列頭部開始,雙指標;記錄當前和
int i=
0,j=1;
int currsum = primes[0]
+primes[1]
;// 如果當前和小於n,則j++;如果等於,則ans++;否則i++
while
(i<=j && j<=primes.
size()
)else
if(currsumelse
}// 直到,
}int
main()
判斷乙個數是否為素數
判斷乙個數n是否是素數,只需要判斷它是否能被2到n之間的數整除就行了,若不能被整除,則說明是素數。考慮到某數大於n 2時,n不可能被該數整除,故只需遍歷2 n 2即可。更進一步,由合數定理可知,若乙個數是合數,則它的最小質因數必小於等於該數的平方根,由此可得更為高效的 如下 include incl...
判斷乙個數是否是素數
素數釋義 曾稱質數。乙個大於1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。如2,3,5,7,11,13,17 public boolean isprime int n for int i 2 i從2開始,一直到小於其自身,依次判斷能否被n整除即可,能夠整除則不是質數,否則是質數...
判斷乙個數是否是素數
一 判斷乙個數是否是素數 思想 拿比自己小的整數依次進行比較 public string issu int a return 是 演算法改進 只要小於該數字的二次根就可以了,因為大於該數字的二次根的數字也是不能整除的 public string issu int a return 是 二 實現乙個氣...