1. 程式人生 > >HDU--4548 美素數

HDU--4548 美素數

problem ++ 又一 sel while 進制 十進制 pid 素數

Problem 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 Case #3: 4

Source 2013金山西山居創意遊戲程序挑戰賽——初賽(2)

Recommend liuyiding | We have carefully selected several similar problems for you: 6044 6043 6042 6041 6040 代碼:
 1 #include<stdio.h>
 2 #define N 1000005
 3 int a[1000005]={0
}; 4 int b[1000005],i; 5 void dabiao() //素數打表 6 { 7 int j; 8 a[0]=a[1]=1; //把前兩個賦值0,其余賦值1怎麽不對??? 9 10 for(i=2;i<N;i++) 11 if(!a[i]) 12 {for(j=i+i;j<N;j+=i) 13 a[j]=1; 14 15 } 16 17 } 18 void biao() //又一個表..不太明白是打表嗎 19 { 20 int t=0; 21 for(i=0;i<N;i++)
22 {if(!a[i]) 23 {int k,sum; 24 k=i; 25 sum=0; 26 27 while(k!=0) 28 {sum+=k%10; 29 k=k/10; 30 31 } 32 if(!a[sum]) 33 t++; 34 35 36 37 38 } 39 b[i]=t; 40 41 } 42 43 } 44 int main() 45 { 46 dabiao(); 47 biao(); 48 int T,L,R; 49 int i=1,s; 50 scanf("%d",&T); 51 while(T--) 52 { 53 scanf("%d%d",&L,&R); 54 s=b[R]-b[L-1]; 55 printf("Case #%d: %d\n",i++,s); 56 57 58 } 59 return 0; 60 }

HDU--4548 美素數