輸出[a,b)內的素數有幾個
第一行輸入a bs
第二行輸出有幾個
2280176348944 2280178729223
利用篩選法,第一次將2的倍數全部刪掉,第二次將3的倍數全部刪掉,第三次將5的倍數全部刪掉,依次類推。is_prime存[b - a]開始存即可(is_prime[0] = a)。
#include
#include
#include
using
namespace
std;
#define max 10000000
bool is_prime[max];
bool is_prime_small[max];
int main()
for (long
long j = max((long
long)2, (a + i - 1) / i ) * i; j < b; j += i) }}
}cout
<< n << endl;
return
0;
}
每日一題 區區區間間間(單調棧的應用)
原題的題意可以理解為求所有子區間的最大值減去最小值的和。即所有子區間的最大值減去最小值。我們考慮用單調棧求解。維護兩個陣列 l i r i 表示當前元素作為最大值所能到達的左邊和右邊的下標是多少 當前元素作為最值 用單調棧維護。先正著維護左區間,再倒著維護右區間。維護時的操作 當前元素大於前乙個元素...
程式設計題 判斷乙個區間的素數個數問題
package 經典程式設計題 author pc 題目 判斷101 200之間有多少個素數,並輸出所有的素數 素數 prime number 又稱質數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數 否則稱為合數。也可以這樣...
每日一題之找出兩個單獨出現的數字
題目 讀入2n個數字,其中,除了有兩個數字是單獨出現外,剩下任何乙個數字出現次數都是偶數個,請寫出演算法找出這兩個數字並輸出 讀入樣例 81 3 4 5 9 1 4 3 輸出 5 9 思路1 看到這道題目,第一反應就是for迴圈列舉一遍,然後統計每個數字出現的次數,最後輸出出現次數是奇數次的 map...