日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小x的质数(线性O(n)筛素数)

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小x的质数(线性O(n)筛素数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小x的質數

題目描述

小 X 是一位熱愛數學的男孩子,在茫茫的數字中,他對質數更有一種獨特的情感。小 X 認為,質數是一切自然數起源的地方。

在小 X 的認知里,質數是除了本身和?11?以外,沒有其他因數的數字。

但由于小 X 對質數的熱愛超乎尋常,所以小 X 同樣喜歡那些雖然不是質數,但卻是由兩個質數相乘得來的數。

于是,我們定義,一個數是小 X 喜歡的數,當且僅當其是一個質數,或是兩個質數的乘積。

而現在,小 X 想要知道,在?LL?到?RR?之間,有多少數是他喜歡的數呢?

輸入格式

第一行輸入一個正整數?QQ,表示詢問的組數。

接下來?QQ?行。包含兩個正整數?LL?和?RR。保證?L \le RLR。

輸出格式

輸出?QQ?行,每行一個整數,表示小 X 喜歡的數的個數。

數據范圍與約定

樣例

樣例解釋 1

66?以內的質數有?2,3,52,3,5,而?4=2 * 2,6 = 2 * 34=2?2,6=2?3。因此?2,3,4,5,62,3,4,5,6?都是小 X 喜 歡的數,而 1 不是。

樣例輸入1

1 1 6

樣例輸出1

5

樣例輸入2

10 282 491 31 178 645 856 227 367 267 487 474 697 219 468 582 792 315 612 249 307

樣例輸出2

97 78 92 65 102 98 114 90 133 29

樣例輸入3

10 20513 96703 15236 86198 23185 78205 40687 48854 42390 95450 63915 76000 36793 92543 35347 53901 44188 76922 82177 90900

樣例輸出3

24413 23001 17784 2669 16785 3833 17712 6028 10442 2734

?

code

1 #include<cstdio> 2 #include<cmath> 3 4 const int MAXN = 10000100; 5 6 bool lk[MAXN],noprime[MAXN]; 7 int prime[MAXN]; 8 int sum[MAXN]; 9 10 int read() { 11 int x = 0,f = 1;char ch = getchar(); 12 for (; ch<'0'||ch>'9'; ch = getchar()) 13 if (ch=='-') f = -1; 14 for (; ch>='0'&&ch<='9'; ch = getchar()) 15 x = x*10+ch-'0'; 16 return x*f; 17 } 18 19 int main() { 20 21 int tot = 0; 22 23 for (int i=2; i<=10000000; i++) { 24 if (!noprime[i]) { 25 prime[++tot]=i; 26 lk[i] = true; 27 for (int j=1; j<=tot && i*prime[j]<=10000000; j++) { 28 noprime[i*prime[j]] = true; 29 lk[i*prime[j]] = true; 30 } 31 } 32 else { 33 for (int j=1; j<=tot&&i*prime[j]<=10000000; j++) { 34 noprime[i*prime[j]] = true; 35 if(i % prime[j] == 0) break ; 36 } 37 } 38 } 39 40 for (int i=1; i<=10000000; ++i) { 41 if (lk[i]) sum[i] = sum[i-1]+1; 42 else sum[i] = sum[i-1]; 43 } 44 45 int L,R,q = read(); 46 while (q--) { 47 L = read();R = read(); 48 printf("%d\n",sum[R]-sum[L-1]); 49 } 50 51 return 0; 52 }

?

轉載于:https://www.cnblogs.com/mjtcn/p/7588708.html

總結

以上是生活随笔為你收集整理的小x的质数(线性O(n)筛素数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。