【模板小程序】求M~N范围内的质数个数
生活随笔
收集整理的這篇文章主要介紹了
【模板小程序】求M~N范围内的质数个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /*
2 本程序說明:
3
4 [編程題] 求素數
5 時間限制:2秒
6 空間限制:32768K
7 輸入M、N,1 < M < N < 1000000,求區間[M,N]內的所有素數的個數。素數定義:除了1以外,只能被1和自己整除的自然數稱為素數
8 輸入描述:
9 兩個整數M,N
10
11
12 輸出描述:
13 區間內素數的個數
14
15 輸入例子1:
16 2 10
17
18 輸出例子1:
19 4
20
21 */
22 //篩法求N以內的素數(普通法+優化),N>=2
23 #include <iostream>
24 #include <cmath>
25 #include <vector>
26 using namespace std;
27 ///尋找N以內的質數的個數
28 size_t find_Prime(int N)
29 {
30 if(1==N)
31 return 0;
32
33 vector<int> prime_tmp(N,1);
34 for(int i=0; 2*i+3<=sqrt(N); i++)
35 {
36 if(prime_tmp[i])
37 for(int j=(2*i+3)+i; j<N; j+=(2*i+3))
38 prime_tmp[j]=0;
39 }
40 vector<int> prime;
41 prime.push_back(2);
42 for(int i=0; i<N; i++)
43 {
44 if(prime_tmp[i] && 2*i+3<=N)//說明是質數,按照質數的方法處理
45 {
46 prime.push_back(2*i+3);
47 }
48 }
49
50 return prime.size();//這里保存了小于等于N的素數
51 }
52
53 int main()
54 {
55 int M,N;
56 while(cin>>M>>N){
57 cout<<find_Prime(N)-find_Prime(M-1)<<endl;
58 }
59 return 0;
60 }
?
轉載于:https://www.cnblogs.com/xiaoxi666/p/7390499.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【模板小程序】求M~N范围内的质数个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: udp丢包 处理
- 下一篇: UVALive - 7270 Osu!