先用乙個陣列來存放素數,然後統計和計算
#include
using
namespace std;
int l,cnt,sum;
int a[
100005];
intisprime
(int n)
return n;
}int
main()
}int i=0;
while(1
)else
break;}
for(
int i=
0;i1;i++
) cout<
1<
}
要注意的點:n可能小於2,要單獨判斷。
然後直接判斷,還有減少時間複雜度的方法:i%2==0&&i!=2 可以直接去除i的倍數。
#include
using
namespace std;
int n,x;
long
long sum=0;
intpd
(int y)
return1;
}int
main()
else
if(n==2)
for(
int i=
2; i<=n;
++i)if(
pd(i))}
return0;
}
P5736 深基7 例2 質數篩
include using namespace std long long shai long long a for int i 2 i sqrt a i return 1 跑遍了迴圈沒找到除1和本身之外的數,那就是素數,返回1。int main for int i 1 i n i 0,1標為不是 ...
洛谷P2249 深基13 例1 查詢 二分
題目鏈結 是個好題目,和平時的二分不同的是,這個需要找到lower bound 的結果。那麼就二分到只有乙個數的時候再判斷,否則x a mid 就搜左邊,x a mid 就搜右邊,就可以實現lower bound 的效果。如下,仔細品味 include include include include...
題解 P5719 深基4 例3 分類平均
之前的 latex 有點崩了,修改一下。這題大家可能第一下想到的方法就是列舉 1 到 n 逐一判斷這些數是否為 k 的倍數,這種做法的時間複雜度為 theta n 其實還有一種做法是列舉小於 n 的 k 的倍數,求出它們的和,即為 a 集合 再用總和減去 a 集合元素的和,即為 b 集合。當 k l...