美素数
//容易超時
?
Problem Description
小明對數(shù)的研究比較熱愛,一談到數(shù),腦子里就涌現(xiàn)出好多數(shù)的問題,今天,小明想考考你對素數(shù)的認識。
問題是這樣的:一個十進制數(shù),如果是素數(shù),而且它的各位數(shù)字和也是素數(shù),則稱之為“美素數(shù)”,如29,本身是素數(shù),而且2+9 = 11也是素數(shù),所以它是美素數(shù)。
?
給定一個區(qū)間,你能計算出這個區(qū)間內有多少個美素數(shù)嗎?
?
?
Input
第一行輸入一個正整數(shù)T,表示總共有T組數(shù)據(jù)(T <= 10000)。
接下來共T行,每行輸入兩個整數(shù)L,R(1<= L <= R <= 1000000),表示區(qū)間的左值和右值。
?
?
Output
對于每組數(shù)據(jù),先輸出Case數(shù),然后輸出區(qū)間內美素數(shù)的個數(shù)(包括端點值L,R)。
每組數(shù)據(jù)占一行,具體輸出格式參見樣例。
?
?
Sample Input
3
1 100
2 2
3 19
?
?
Sample Output
Case #1: 14
Case #2: 1
Case #3: 4
?
?
#include <stdio.h>#include <math.h>int b[555555];bool sushu(int a){if(a==1)return false;int i;for(i=2;i*i<=a;i++){if(a%i==0)return false;}return true;}bool wei(int b){int sum=0;if(!sushu(b))return 0;while(b){sum+=b%10;b/=10;}if(sushu(sum))return true;return false;}int main(){int t;int ti=1;int l,r,i,j,k;k=0;for(i=2;i<=1000001;i++){if(wei(i))b[k++]=i;}scanf("%d",&t);while(t--){int ans=0;scanf("%d%d",&l,&r);for(i=0;i<k;i++){if(b[i]>=l &&b[i]<=r)ans++;}printf("Case #%d: %d\n",ti++,ans);}return 0;}?
轉載于:https://www.cnblogs.com/awsent/p/4267036.html
總結
- 上一篇: 甜甜的土味情话撩男生 撩男生的甜蜜土味情
- 下一篇: HDoj-1874-畅通project续