标签:打表 mes tput 计算 区间 output name space problem
备注:
1 #include<stdio.h> 2 #include<math.h> 3 #include<iostream> 4 #include<string.h> 5 using namespace std; 6 #define max 1000000 7 bool isprime[max+1]; 8 int prime_sum[max+1]; 9 int sum[max+1]; 10 //素数表 11 void prime() 12 { 13 memset(isprime,true,sizeof(isprime));//初始化数组 14 isprime[1]=0; 15 for(int i=2;i<=max;i++) 16 { 17 18 if(isprime[i]==1)//素数为1 19 { 20 for(int j=i*2;j<=max;j+=i) 21 { 22 isprime[j]=false; 23 } 24 } 25 } 26 } 27 //1-i的美素数个数 28 void pprime() 29 { 30 for(int i=2;i<=max;i++) 31 { 32 int s=0,j=i; 33 prime_sum[i]=prime_sum[i-1]; 34 if(isprime[i]) 35 { 36 37 while(j) 38 { 39 s+=j%10; 40 j/=10; 41 } 42 if(isprime[s]) 43 { 44 prime_sum[i]++; 45 } 46 } 47 } 48 } 49 int main() 50 { 51 int n; 52 scanf("%d",&n); 53 prime(); 54 pprime(); 55 for(int i=1;i<=n;i++) 56 { 57 int l,r; 58 scanf("%d %d",&l,&r); 59 sum[i]=prime_sum[r]-prime_sum[l-1]; 60 printf("Case #%d: %d\n",i,sum[i]); 61 62 }
//加入调试代码检查打表是否正确 63 // prime(); 64 // pprime(); 65 // for(int i=2;i<101;i++) 66 // { 67 // printf("第%d个元素:%d \n",i,isprime[i]); 68 // printf("1-%d有%d个美素数\n",i,prime_sum[i]); 69 // } 70 return 0; 71 }
标签:打表 mes tput 计算 区间 output name space problem
原文地址:https://www.cnblogs.com/harutomimori/p/9863109.html