美素數 hd 4548
Description
小明對數的研究比較熱愛,一談到數,腦子裡就湧現出好多數的問題,今天,小明想考考你對素數的認識。
問題是這樣的:一個十進位制數,如果是素數,而且它的各位數字和也是素數,則稱之為“美素數”,如29,本身是素數,而且2+9 = 11也是素數,所以它是美素數。
給定一個區間,你能計算出這個區間內有多少個美素數嗎?
Input
第一行輸入一個正整數T,表示總共有T組資料(T <= 10000)。
接下來共T行,每行輸入兩個整數L,R(1<= L <= R <= 1000000),表示區間的左值和右值。
Output
對於每組資料,先輸出Case數,然後輸出區間內美素數的個數(包括端點值L,R)。
每組資料佔一行,具體輸出格式參見樣例。
Sample Input
3
1 100
2 2
3 19
Sample Output
Case #1: 14
Case #2: 1
小明對數的研究比較熱愛,一談到數,腦子裡就湧現出好多數的問題,今天,小明想考考你對素數的認識。
問題是這樣的:一個十進位制數,如果是素數,而且它的各位數字和也是素數,則稱之為“美素數”,如29,本身是素數,而且2+9 = 11也是素數,所以它是美素數。
給定一個區間,你能計算出這個區間內有多少個美素數嗎?
Input
第一行輸入一個正整數T,表示總共有T組資料(T <= 10000)。
接下來共T行,每行輸入兩個整數L,R(1<= L <= R <= 1000000),表示區間的左值和右值。
Output
對於每組資料,先輸出Case數,然後輸出區間內美素數的個數(包括端點值L,R)。
每組資料佔一行,具體輸出格式參見樣例。
Sample Input
3
1 100
2 2
3 19
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4
#include <stdio.h>
int su[1000000+11] = {1,1};
int ant[1000000+11] = {0};
bool check(int x)
{
if (su[x])
return false;
int sum = 0;
while (x)
{
sum += (x % 10);
x /= 10;
}
if (su[sum])
return false;
return true;
}
int main()
{
for (int i = 2 ; i <= 500000 ; i++)
{
if (su[i])
continue;
for (int j = i + i ; j <= 1000000 ; j += i)
su[j] = 1;
}
for (int i = 2 ; i <= 1000000 ; i++)
{
if (check(i))
ant[i] = ant[i-1] + 1;
else
ant[i] = ant[i-1];
}
int u,num = 1;
int l,r;
scanf ("%d",&u);
while (u--)
{
scanf ("%d%d",&l,&r);
printf ("Case #%d: %d\n",num++,ant[r] - ant[l] + (check(l) ? 1 : 0));
}
return 0;
}
相關文章
- 素數判定 hd 2012
- 分拆素數和 hd 2098
- PAT-B 1013 數素數 【素數】
- 素數
- 偶數求和 hd 2015
- PAT-B 1007 素數對猜想【素數】
- 整除的尾數 hd 2099
- 大菲波數 hd 1715
- 最小公倍數 hd 1108
- 素數篩
- 數論(1):素數
- 判斷素數
- 素數判斷
- 素數 UVA 406
- 最強素數
- 【數論】素數篩法
- 計算素數【Java】Java
- PAT1013數素數C++C++
- 如何高效尋找素數
- 密碼工程-大素數密碼
- 第六章 數學問題 ----------6.13 素數的篩法(第十萬零二個素數)
- 初等數論——素數,逆元,EXGCD有關GC
- [PAT B] 1013 數素數 -未完成
- [PAT B] 1007 素數對猜想
- 素數判定(int sushu(int n))
- [演算法]: 素數篩法演算法
- 1354: 素數判定(C語言)C語言
- C語言判斷素數,判斷質素演算法C語言演算法
- 素數個數 <埃式篩 && 尤拉篩>
- 1013 數素數 (20分)/c++實現C++
- 逃離美術內卷,畫素風能行麼?
- L1-028 判斷素數 分數 10
- 求十個連續最小自然數,非素數。
- 6-2 計算素數和
- 素數判定演算法 初級演算法
- 計算 1-100 的素數
- 關於素數定理的證明
- c語言 構造素數表C語言