題目如下:
這里面有部分代碼比較有意思:
1,為何開始先遍歷,最終值小于50000?
因為題目要求的右邊與左邊差小于 10^6 ,所以最多有10^3個素數,所以保存里面的素數數量大于1000,而50000的化里面有5千個素數,滿足
2,這串代碼啥意思?
找最大的起始點,先看右邊部分,減1是有分兩種情況
①當被除數能被除數除凈時,此時分子減一 ,之后結果加1,值不會變
②當不能被除凈,分子減一無影響,之后結果加1則會取到范圍內恰好為b[i]整數倍的數
而當left非常小時,因為素數最小從2開始,所以最小取2
3,為何加 !=1
因為可能出現把1當作素數的情況
詳細代碼如下: